Programmation VBA pour Excel
Accueil
Sommaire du cours
Sommaire des exercices
Résumé du cours
Forum
Travaux
TICE
AgroParisTech
A propos
©AgroParisTech
Chapitre 9 - Les évènements
Un événement est une action reconnue par un objet. La reconnaissance d’un événement par un objet permet de déclencher l’exécution d’une procédure lorsque cet événement survient. Un clic souris ou la frappe d’une touche au clavier sont des exemples d’événements qui peuvent être interprétés par du code VBA.
Pour qu’un objet réponde à un événement, il faut écrire du code VBA dans la procédure associée à l’événement considéré. Ces procédures sont stockées dans les modules de codes associés aux objets concernés.
Nous verrons plus loin que les contrôles placés dans une boîte de dialogue (boutons de commande, zones de texte, ...) peuvent répondre à des événements. Les classeurs et les feuilles de calcul peuvent également répondre à des événements. Pour qu’un objet réponde à un événement, il faut écrire du code VBA dans la procédure associée à l’événement considéré.
Exercice guidé
L'image parlant mieux que les mots, un exercice guidé illustrera ce chapitre. Suivez le pas à pas pour ne rien oublier.
Il s'agit d'écrire une procédure qui détecte chaque nouvelle plage de cellules ou cellule sélectionnée par l’utilisateur dans la feuille de calcul FEUIL1 du classeur nommé ici pour l’exemple TEST-MACRO.XLS et colorie son fond en bleu.
Avant d’écrire cette procédure, il faut :
  • identifier l’objet dont on veut traiter l’événement. Dans notre cas, il s’agit de la feuille de calcul FEUIL1 qui est un objet Worksheet ;
  • puis identifier l’événement à traiter dans la liste des événements associés à l’objet considéré. Dans notre cas, on s’intéresse à chaque nouvelle sélection d’une plage de cellules ou cellule dans la feuille de calcul, ce qui correspond à l’événement SelectionChange ;
  • enfin, écrire le code VBA approprié dans la procédure associée à l’événement choisi.
  • Pour cela, nous allons :
    1) Ouvrir le classeur TEST-MACRO.XLS, puis l’éditeur de Visual Basic ;
    2) Dans l’explorateur de projets, sélectionner la feuille de calcul FEUIL1 et ouvrir son module de code à l’aide du clic droit de la souris et de l’option CODE.
    3) Dans la liste de gauche au sommet du module de code, sélectionner l’option WORKSHEET. Dans la liste de droite au sommet du module de code, sélectionner l’événement SelectionChange.
    SelectionChange
    On voit alors apparaître dans le module de code l’en-tête de procédure suivant :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cet en-tête de procédure généré automatiquement ne doit pas être modifié. La variable Target correspond à la plage de cellules sélectionnée par l'utilisateur.
    On veut à présent écrire les instructions VBA permettant de colorier le fond d’une cellule ou d’une plage de cellules en bleue. Pour trouver ces instructions, il existe deux possibilités :
  • utiliser l’enregistreur de macro ;
  • explorer les propriétés de l’objet Range pour trouver comment modifier sa couleur de fond.
  • Le moyen le plus facile pour découvrir les instructions nécessaires pour accomplir une opération donnée consiste à utiliser l’enregistreur de macro.
    4) Aller dans EXCEL et enregistrer une nouvelle macro MacroCouleurFond qui permet de modifier la couleur de fond d’une cellule.
    5) Retourner dans l’éditeur de Visual Basic et étudier le code de la macro MacroCouleurFond.
    L’instruction Selection.Interior.ColorIndex = 41 semble intéressante puisqu’elle parle de couleur. Pour obtenir de l’aide sur cette instruction, sélectionner dans le code la propriété ColorIndex et appuyer sur la touche F1. L’aide en ligne de l’éditeur de Visual Basic permet d’obtenir les informations suivantes :
  • La propriété Interior d’un objet Range renvoie un objet Interior qui correspond à la couleur de fond d’une plage de cellules.
  • La propriété ColorIndex d’un objet Interior permet de déterminer la couleur de fond.
  • 6) Retourner dans le module de code associé à la feuille de calcul FEUIL1 et compléter la procédure Worksheet_SelectionChange comme suit :

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Target.Interior.ColorIndex = 41

    End Sub

    La variable Target qui est un objet Range représente la plage de cellules ou la cellule sélectionnée par l’utilisateur dans la feuille de calcul FEUIL1.
    7) Enregistrer la procédure et retourner dans EXCEL pour la tester. Pour cela, sélectionner une plage de cellules ou cellule et vérifier que sa couleur de fond devient bleue.
    Ce chapitre est terminé, à vous de jouer ! ‹ lien vers les exercices