VBA - Mon tout premier UserForm - Débutants extrêmes

Septembre 2016



Le plus simple formulaire qui soit...


Introduction

Nous allons travailler, dans cet exemple, uniquement en mode "création".
En mode création, les propriétés des objets (Userform et contrôles) sont complétées dans la fenêtre propriété, "en dur".
On ne va pas modifier ces propriétés par le code (dynamique).

Nous allons nous attacher à créer une boîte de dialogue comportant :
  • une question : "Voulez-vous sauvegarder ?"
  • deux boutons : "OUI" et "NON"


Avant de commencer, ouvrez un nouveau classeur et "basculez" sous l'éditeur Visual Basic. Pour cela, depuis votre classeur tapez ALT+F11.

Partie design

Insertion de l'UserForm

Deux possibilités :
Menu/Insertion


bouton de la barre d'outils :


On obtient :


A ce stade, vérifiez que vous avez ouvert les fenêtres :
  • propriétés (flèche verte) (pour l'ouvrir : F4),
  • d'exécution (flèche rouge) (pour l'ouvrir : Ctrl+G),
  • principale (flèche bleue)


Félicitations, vous venez de créer votre premier userform!

Propriété Caption

Vous voyez, dans l'image ci-dessus, que la barre de titre de notre UserForm affiche : UserForm1.
Nous souhaiterions plutôt y voir apparaître le titre "Message".
Pour cela, nous allons modifier la propriété Caption de notre UserForm.
Dans la fenêtre propriété, en regard de Caption, sélectionnez UserForm1 :

et saisir : Message
Vous obtenez ceci :

Insertion Label

Dans la boîte à outils (si elle n'est pas affichée : Menu Affichage/Boîte à outils), cliquez sur l'icône Label (intitulé) :

puis, cliquez dans l'userform, à l'endroit ou vous voulez placer votre question :

Nota : Vous pouvez "dessiner" votre label (ou tout autre contrôle), en faisant un glisser-déplacer (en maintenant le bouton gauche de la souris enfoncé) dans l'userform.

Nota 2 : Vous voyez dans l'image ci-dessus que la fenêtre propriétés affiche maintenant les propriétés du Label (flèche rouge). En fait, dans cette fenêtre s'affichent systématiquement les propriétés de l'objet sélectionné.

Dans cette fenêtre propriétés, changez la propriété Caption du Label pour y inscrire : Voulez-vous sauvegarder ?

Vous pouvez maintenant redimensionner votre label et le positionner ou vous le voulez, simplement à la souris.

Insertion CommandButton

De la même manière que vous avez inséré un Label, insérez maintenant un bouton de commande.
Dans la boîte à outils, cliquez sur l'icône :

puis, cliquez dans l'userform, a l'endroit ou vous voulez placer votre bouton.
Changez les propriétés suivantes :
  • Name : CommandButtonOUI
  • Caption : OUI

Vous obtenez :


Faites de même pour le second bouton, avec les propriétés suivantes :
  • Name : CommandButtonNON
  • Caption : NON

Vous obtenez :


Attention à toujours sélectionner l'objet pour en changer ses propriétés.

Aligner des contrôles

C'est bien, notre boîte de dialogue prend forme, mais l'alignement des boutons laisse à désirer.
VBA possède un outil pour régler ce souci.
  • Sélectionnez les deux boutons,
  • Clic droit sur l'un des deux,
  • Alignez,
  • Haut



Voilà, vous en avez terminé avec le "design", on peux passer à la partie code.

Le code

Nous avons besoin ici de :
  • "simuler" une sauvegarde lors d'un clic sur le bouton OUI, puis fermer l'userform
  • ne rien faire si ce n'est fermer l'userform lors d'un clic sur non.


"Lors d'un clic" signifie que nous allons "intercepter" l'événement de clic sur un bouton.

Passer en mode "code"

Pour cela, rien de plus simple, double-cliquez sur le bouton OUI.
Vous obtenez ceci :

Nous sommes actuellement dans l'éditeur du module de code de votre UserForm.

Dans cette fenêtre, vous avez deux listes déroulantes très intéressantres :
la liste "Général", y sont regroupés tous les objets de votre UserForm (lui compris) :

et la liste des événements relatifs à l'objet sélectionné dans le menu "général" :

Evénement clic sur bouton

Nous devons saisir du code qui réagira à l'événement clic sur un bouton.
Cela tombe bien car, en double-cliquant sur le bouton OUI, VBA nous a créé cette procédure :
Private Sub CommandButtonOUI_Click()

End Sub

C'est entre ces deux lignes que nous allons écrire le code correspondant à l'événement "clic sur oui".


Décortiquons la première ligne :
Private Sub CommandButtonOUI_Click()
  • Private Sub : signifie que cette procédure (Sub) ne peut être appelée que depuis l'UserForm (Private)
  • CommandButtonOUI_Click : ce qu'il y a avant l'underscore (_) est le nom de l'objet (CommandButtonOUI), à droite l'événement (Click)

Code du bouton OUI

Avant d'écrire le code, il faut savoir que placer une apostrophe en début de ligne permet d'écrire des commentaires.
Ces commentaires sont très utiles si vous deviez modifier le code quelques temps après sa création.
N'hésitez pas à les utiliser.
Voici le code du bouton OUI (n'en faites pas un copié/collé, prenez le soin de le saisir par vous même) :
Private Sub CommandButtonOUI_Click()
    'simulation de sauvegarde :
    MsgBox "Sauvegarde effectuée"
    'ferme l'userform
    Unload UserForm1
End Sub


Ce code signifie simplement :
  • au clic sur le bouton OUI,
  • on affiche le message : Sauvegarde effectuée,
  • on ferme l'userform

Code du bouton NON

  • Sélectionnez, dans le menu "Général", l'objet "CommandButtonNON",
  • Dans la liste des événements, sélectionnez "Click",

Les deux lignes suivantes apparaissent :
Private Sub CommandButtonNON_Click()

End Sub

Ne vous reste qu'à les compléter, comme ceci :
Private Sub CommandButtonNON_Click()
    'ne fait rien si ce n'est :
    'ferme l'userform
    Unload UserForm1
End Sub

Tester l'userform

Pour le lancer, voici quelques possibilités

Depuis l'éditeur VBE

1ère possibilité :
En mode affichage de code, appuyez sur la touche F5, votre UserForm apparaît alors.

2ème possibilité :
En mode affichage de code, cliquez dans le menu Exécution / Exécuter Sub/Userform


3ème possibilité :
En mode affichage de code, cliquez sur l'icône "lecture" (petit triangle vert)

Dans les trois cas, vous obtenez ceci :

Depuis une feuille

Dessinez un bouton sur une feuille de votre classeur (Attention : Bouton de commande contrôle activeX! pas formulaire).
Double cliquez sur le bouton, vous obtenez :
Private Sub CommandButton1_Click()

End Sub

Saisissez, entre ces deux lignes (vous commencez à avoir l'habitude) :
UserForm1.Show

Vous obtenez ceci :
Private Sub CommandButton1_Click()
    'charge ET affiche l'userform1 :
    UserForm1.Show
End Sub
  • Fermez l'éditeur VBE,
  • Fermez le mode création (icône avec une équerre, un crayon et une règle),
  • Cliquez sur le bouton.

Vous obtenez ceci :


Pour tester le code, cliquez sur chacun des boutons...

Conclusion

ce tutoriel, très simple, s'adresse aux débutants.
La suite très bientôt : Mon second UserForm, nous montreras comment créer un QCM avec un Userform.
Nous y travaillerons plus en dynamique, c'est à dire que les propriétés des objets seront alors modifiées par le code.

A voir également :

Ce document intitulé «  VBA - Mon tout premier UserForm - Débutants extrêmes  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.