But du Tutoriel :
Construire une base de données simple sur feuille Excel.
Pour réaliser le formulaire
il faudra dessiner:
1 "Userform" 2 "Label" 2 "TextBox" 1 "ComboBox" 1 "CommandButton"
Nommer des titres NOM et PRENOM dans les colonnes A et B.
Création d’une Base de donnée Nom et Prénom.
Dessiner un formulaire « Userform » en VBA.
Click sur -> Développeur + Visual Basic
Ou ALT + F11
Mettre les bonnes propriétés pour chaque contrôle dans éditeur VBA.
Insertion d’un formulaire « Userform. »
La boite à outils
Dessiner une étiquette de titre « Label »
Dessiner une boite de Texte « TextBox ».
Dessiner une « ComboBox » ( Pour valeur numérique )
Dessiner un « Bouton de commande »
Renommer chaque Contrôle.
Choisir le contrôle à renommer.
Renommer le contrôle avec la propriété « Name »
Utiliser la tabulation à l’aide de la propriété « Tabindex ».
Première TextBox = 0
Deuxième TextBox = 1
Bouton de commande = 2
Pas de « TabStop » pour les autres contrôles.
Utiliser l’affichage de l’aide de remplissage du champ d’un contrôle. « ControlTipText »
Pour le texte du bouton changer Caption
Utiliser la propriété « TAG » afin de déterminer la bonne colonne directement pour le remplissage de la base de données.
Dans le code ci-dessous nous allons utiliser « Cells ( Ligne , Colonne) »
Le numéro de la colonne sera donc égal à notre Tag.
Notre Tag est une chaine de caractère « String »
Il faudra alors le convertir en entier.
Donc « Cint (control.Tag) »
Colonne « A » = 1, « B » = 2 etc…
Le contrôle « TextBox » peut contenir des nombres, mais il est préférable de manipuler les nombres avec une « ComboBox ».
Car une boite de texte est principalement utiliser pour du texte.
Afin d’utiliser correctement le contrôle « ComboBox ».
Changer les propriétés comme cela :
Et utiliser .Value au lieu de .Text dans votre code. (Pour valeur numérique.)
Sélectionner le formulaire puis F7 pour afficher le code ou :
Et maintenant le code :
'Mettre les variables en dehors pour la portée
'Donne la possibilité de garder la valeur en quittant la procédure.
Dim txt As Control
Dim derniere_ligne As Integer
' ******************* DEBUT DE CODE USF *********************
Private Sub UserForm_Initialize()
' Assignation de la variable
' Recherche de la dernière ligne vide de la colonne A
derniere_ligne = Range("A" & Rows.Count).End(xlUp).Row
' Utilisation de la Fonction IIF intéressante pour deux conditions.
IIf derniere_ligne = 1, NombreInscrit.Value = 0, NombreInscrit.Value = derniere_ligne
End Sub
' ********************** FIN DE CODE USF *********************
' **************** DEBUT DE CODE VALIDER ********************
Private Sub CmdBtnValider_Click()
'Déclaration de variable
Dim ajout_ok As Boolean
' Assignation de la valeur de la variable ligne vide
derniere_ligne = Range("A" & Rows.Count).End(xlUp).Row + 1
' Boucle sur le Userform (ici = Me)
For Each txt In Me.Controls
If TypeName(txt) = "TextBox" Then
'Ucase mettre en majuscule
Cells(derniere_ligne, CInt(txt.Tag)).Value = UCase(txt.Value)
ajout_ok = True
End If
Next
If ajout_ok Then clear_txt
End Sub
' ******************** FIN DE CODE VALIDER *******************
'**************** Effacer les données des TextBox' ***************
Private Sub clear_txt()
' Boucle sur le userform (idem Me)
For Each txt In Me.Controls
If TypeName(txt) = "TextBox" Then
txt.Value = ""
End If
Next
NombreInscrit.Text = derniere_ligne
End Sub
' ******************* FIN DE CODE EFFACER *******************
Afin de pouvoir interagir directement avec la feuille Excel , et le formulaire j’ai changé la propriété :
ShowModal = False