Académique Documents
Professionnel Documents
Culture Documents
php
Les contrles ont galement toute une panoplie de proprits et d'vnements qui diffrent d'un contrle
l'autre, nous ne verrons ici que quelques unes des nombreuses possibilits lies ces contrles.
Commencez par ajouter les 3 contrles suivants : un intitul (Label), une zone de texte (TextBox) et un
bouton (CommandButton) :
Modifiez le nom et les proprits des contrles (dont la proprit Caption pour le texte) pour obtenir ceci :
Pour le moment, lorsque l'on rentre un numro et que l'on valide, il ne se passe rien.
Pour y remdier, nous allons commencer par ajouter un vnement pour entrer la valeur de la zone de texte dans la cellule A1 et fermer l'UserForm.
Range("A1") = TextBox_numero.Value
'TextBox_numero est le nom de la zone de texte
'Value est la proprit contenant la valeur de la zone de texte
Unload Me
'Unload ferme l'UserForm
'Le nom de l'UserForm a t remplac par Me (puisque ce code est plac dans l'UserForm fermer)
End Sub
Ajoutez un second Label et modifiez les proprits suivantes : Caption, Forecolor (couleur rouge) et Visible (False, pour masquer le contrle par dfaut) :
Nous allons maintenant ajouter un vnement qui s'active au changement de valeur de la zone de texte et qui va afficher le message d'erreur si la valeur n'est pas
numrique.
1 of 5 16/10/2016 14:19
Cours VBA : les contrles http://www.excel-pratique.com/fr/vba/controles.php
Label_erreur.Visible = True 'Label visible
End If
End Sub
Il nous reste encore empcher la validation du formulaire si la valeur n'est pas numrique :
Pour ne pas laisser vide la partie droite de l'UserForm lorsqu'il n'y a pas d'erreur, nous pouvons la rduire en modifiant la proprit Width de l'UserForm :
Le fichier : userform1.xls
Aperu :
Si une case est coche/dcoche la valeur de la cellule correspondante sera modifie, avec l'vnement Click :
2 of 5 16/10/2016 14:19
Cours VBA : les contrles http://www.excel-pratique.com/fr/vba/controles.php
If CheckBox2.Value = True Then 'Si coch ...
Range("B2") = "Coch"
Else 'Si non coch ...
Range("B2") = "Non coch"
End If
End Sub
Dans cet exemple, les cases ne sont pas coches au lancement de l'UserForm.
Pour cocher les cases dont la valeur de la cellule correspondante est "Coch", un test est effectu au lancement de l'UserForm avec l'vnement
UserForm_Initialize :
Le fichier : userform2.xls
Contrairement aux cases cocher, l'utilisateur ne peut choisir qu'un seul bouton d'option par "groupe".
Pour crer un groupe, insrez d'abord un cadre (Frame) puis les boutons d'option :
Le fichier : userform3.xls
Une fois le formulaire valid, nous entrerons une donne dans la cellule correspondant aux numros de colonne et de ligne choisis.
Pour connatre le bouton qui a t coch, nous pourrions procder de la mme manire qu'avec le prcdent exemple (cases cocher) mais nous allons le faire
l'aide d'une boucle pour allger le code.
Nous utiliserons la boucle For Each que nous n'avions pas encore abord jusque-l. Elle permet d'excuter des instructions pour chaque objet d'un "groupe
d'objet" :
3 of 5 16/10/2016 14:19
Cours VBA : les contrles http://www.excel-pratique.com/fr/vba/controles.php
'Si la valeur du contrle = True (donc si coch) ...
If bouton_colonne.Value Then
'La variable "colonne" prend comme valeur le texte du bouton
colonne = bouton_colonne.Caption
End If
Next
Ce formulaire entre alors la valeur "Cellule choisie !" dans la cellule choisie (pour autant que le formulaire soit complet).
Pour viter d'avoir ce bug, nous avons besoin de vrifier que l'utilisateur a bien coch les deux boutons d'option.
Pour cet exemple, tant que le formulaire sera incomplet, le bouton "Valider" restera dsactiv. Ce n'est pas la solution la plus simple, mais cela vous dmontrera
l'intrt d'utiliser des fonctions/procdures dans un UserForm.
Dans le code ci-dessus, nous avons utilis 2 boucles For Each pour obtenir les valeurs des boutons cochs. Nous allons avoir besoin de ces mmes valeurs dans
les vnements Click du bouton "Valider" ainsi que des 10 boutons d'option.
Pour viter de copier ces boucles dans chaque vnement, nous allons les appeler l'aide d'une fonction.
Il ne reste plus qu' crer une procdure qui vrifie si les boutons sont bien cochs (en faisant appel aux deux fonctions) et qui active le bouton si c'est le cas.
4 of 5 16/10/2016 14:19
Cours VBA : les contrles http://www.excel-pratique.com/fr/vba/controles.php
L encore, le test est effectu dans une procdure part pour viter de copier 10x le code dans les vnements des boutons d'option :
Le fichier : userform3b.xls
5 of 5 16/10/2016 14:19