Cours VBA - Présentation - Le code VBA s'écrit dans les modules à l'intérieur d
Cours VBA - Présentation - Le code VBA s'écrit dans les modules à l'intérieur de procédures ou de fonctions . Dans VBE, créez un nouveau module par le menu "Insertion - Module". Renomez le module à l'aide de la fenêtre propriétés, la recherche de vos procédures sera plus rapide . Une procédure est une suite d'instructions effectuant des actions. Elle commence par Sub + NomDeLaProcédure et se termine par End Sub. Le nom des procédures ne doit pas commencer par une lettre et ne doit pas contenir d'espaces. Utilisez le caractère de soulignement pour séparer les mots. Je vous conseille de les écrire comme des noms propres . Pour déclarer une procédure, taper Sub et son nom puis taper Entrée. VBE ajoute automatiquement les parenthèses et la ligne End Sub . Exemple de Procédure nommée Essai : Sub Essai () MsgBox "Bonjour " End Sub Une fonction est une procédure qui renvoie une valeur. Elle se déclare de la même façon qu'une procédure . Exemple de fonction nommée Calcul : Function Calcul(Nbre1 As Integer, Nbre2 As Integer ( Calcul = Nbre1 + Nbre2 End Function En général, on écrit une instruction par ligne . Il est possible d'ajouter des lignes de commentaire entre les lignes d'instruction ou au bout de celles-ci. Les commentaires sont précédés d'une apostrophe et prennent une couleur différente (définie dans les options de VBE : ( Sub Essai () Dim Invite as String 'Nom de l'utilisateur Invite = "Toto " ' Message bonjour à l'utilisateur MsgBox "Bonjour " & Invite End Sub Résultat : Il n'y a pas de limite de caractères pour chaque ligne d'instruction. Il est toutefois possible d'écrire une instruction sur plusieurs lignes afin d'augmenter la visibilité du code. Pour cela, il faut ajouter le caractère de soulignement avant le passage à la ligne (touche Entrée : ( Sub Essai () MsgBox("Aujourd'hui nous sommes le _ " & Date, vbInformation, "Mon Application (" End Sub Résultat : L'option "Info express automatique" permet d'afficher les informations de la fonction que vous venez de taper. Il est également possible d'obtenir de l'aide à tout moment par la combinaison de touches Crtl+j : La vérification automatique de la syntaxe vous alerte si il y a une erreur dans l'écriture du code et la ligne de code change de couleur . Si la vérification automatique de la syntaxe n'est pas activée, la boite d'alerte ne s'affiche pas . Chaque procédure Sub ou Function peut être appelée de n'importe qu'elle autre procédure du projet. Pour restreindre la portée d'une procédure au module, déclarez-la en private : Private Sub Essai () MsgBox "Bonjour " End Sub Private Function Calcul(Nbre1, Nbre2 ( Calcul = Nbre1 + Nbre2 End Function A l'intérieur de vos procédures, écrivez vos instructions en minuscules, VBE se chargera de transformer votre code par des majuscules . Il existe souvent de multiples façons d'arriver à un résultat.Une bonne analyse des tâches à accomplir est nécessaire avant de se lancer dans la création d'une application . Si vous n'avez aucune expérience en VBA, vous verrez que l'on y prend vite goût et que l'on arrive très rapidement à de surpenants résultats . Cours VBA - Le vocabulaire - VBA manipule les objets de l'application hôte. Chaque objet possède des propriétés et des méthodes . Les objets : Chaque objet représente un élément de l'application. Sous Excel, un classeur, une feuille de calcul, une cellule, un bouton, etc ... sont des objets. Par exemple, Excel représente l'objet Application, Workbook l'objet classeur, Worksheet l'objet feuille de calcul etc ... Tous les objets de même type forment une collection comme, par exemple, toutes les feuilles de calcul d'un classeur. Chaque élément est alors identifié par son nom ou par un index . Pour faire référence à la Feuil2, on va utiliser Worksheets(2) ou Worksheets("Feuil2 (" Chaque objet peut avoir ses propres objets. Par exemple, Excel possède des classeurs qui possèdent des feuilles qui possèdent des cellules. Pour faire référence à une cellule, on pourrait ainsi utiliser : Application.Workbooks(1).Worksheets("Feuil2").Range("A1 (" Les propriétés : Une propriété correspond à une particularité de l'objet. La valeur d'une cellule, sa couleur, sa taille, etc...sont des propriétés de l'objet Range. Les objets sont séparés de leurs propriétés par un point. On écrira ainsi Cellule.Propriété=valeur : ' Mettre la valeur 10 dans la cellule A1 Range("A1").Value = 10 Une propriété peut également faire référence à un état de l'objet. Par exemple, si on veut masquer la feuille de calcul "Feuil2", on écrira : Worksheets("Feuil2").Visible = False Les méthodes : On peut considérer qu'une méthode est une opération que réalise un objet. Les méthodes peuvent être considérées comme des verbes tels que ouvrir, fermer, sélectionner, enregistrer, imprimer, effacer, etc... Les objets sont séparés de leurs méthodes par un point. Par exemple, pour sélectionner la feuille de calcul nommé "Feuil2", on écrira : Worksheets("Feuil2").Select Lorsque l'on fait appel à plusieurs propriétés ou méthodes d'un même objet, on fera appel au bloc d'instruction With Objet Instructions End With. Cette instruction rend le code souvent plus facile à lire et plus rapide a exécuter . ' Mettre la valeur 10 dans la cellule A1, la police en gras et en italique et copier la cellule . With Worksheets("Feuil2").Range("A1 (" . Value = 10 . Font.Bold = True . Font.Italic = True . Copy End With Ce vocabulaire peut paraître déroutant mais deviendra très rapidement familier lors de la création de vos premières applications . Cours VBA - Les évènements - Pour qu'une macro se déclenche, il faut qu'un évènement (un clic sur un bouton, l'ouverture d'un classeur, etc...) se produise. Sans évènements, rien ne peut se produire . Les évènements liés aux objets . Les principaux objets pouvant déclencher une macro sont : Un classeur Une feuille de travail Une boite de dialogue Chacun de ces objets possède leur propre module. Pour y accéder, lancer l'éditeur de macro : Pour créer une procédure évènementielle liée à un classeur, sélectionner le classeur "ThisWorkbook" puis cliquez sur l'icône 3 (ou plus simplement double-clic sur "ThisWorkbook .(" Vous accédez ainsi au module lié à l'objet. Sélectionnez "Workbook" dans la liste 1 puis sur l'évènement désiré dans la liste 2 . Par exemple, le code suivant lancera la procédure nommée "Test" à l'ouverture du classeur : Private Sub Workbook_Open () Test End Sub Liste des évènements de l'objet Workbook .: Evénements : Se produit : Activate quand le classeur ou une feuille est activé AddinInstall quand le classeur est installé en macro complémentaire AddinUninstall quand le classeur est désinstallé en macro complémentaire BeforeClose avant que le classeur soit fermé BeforePrint avant l'impression du classeur BeforeSave avant l'enregistrement du classeur Deactivate quand le classeur ou une feuille est désactivé NewSheet lorsqu'une nouvelle feuille est créée Open à l'ouverture du classeur PivotTableCloseConnection lorsqu'un qu'un rapport de tableau croisé dynamique se déconnecte de sa source de données PivotTableOpenConnection lorsqu'un qu'un rapport de tableau croisé dynamique se connecte à une source de données SheetActivate lorsqu'une feuille est activée SheetBeforeDoubleClick lors d'un double-clic SheetBeforeRightClick lors d'un clic avec le bouton droit de la souris SheetCalculate après le recalcul d'une feuille de calcul SheetChange lors de la modification d'une cellule SheetDeactivate lorsqu'une feuille est désactivée SheetFollowHyperlink lors d'un clic sur un lien hypertexte SheetPivotTableUpdate lors de la mise à jour de la feuille du rapport de tableau croisé dynamique SheetSelectionChange lors d'un changement de sélection sur une feuille de calcul WindowActivate lorsqu'un classeur est activé WindowDeactivate lorsqu'un classeur est désactivé WindowResize lors du redimentionnement de la fenêtre d'un classeur La création d'une procédure évènementielle liée à une feuille de calcul se fait de la même façon . Liste des évènements de l'objet Worksheet : Evénements : Se produit : Activate quand une feuille est activée BeforeDoubleClick lors d'un double-clic BeforeRightClick lors d'un clic avec le bouton droit de la souris Calculate après le recalcul de la feuille de calcul Change lors de la modification d'une cellule Deactivate quand une feuille est désactivée FollowHyperlink lors d'un clic sur un lien hypertexte PivotTableUpdate lorsqu'un rapport de tableau croisé dynamique a été mis à jour SelectionChange lors d'un changement de sélection Certaines procédures évènementielles possèdent des paramètres tels que "Cancel", qui peut annuler la procédure, "SaveAsUi" qui, dans la procédure "Workbook_BeforeSave" affiche la boite "Enregistrer sous", "Sh" qui représente la feuille de calcul, "Target" qui représente l'objet sélectionné(Cellule, graphique, lien hypertexte), "Wn" qui représente la fenêtre active . Par exemple, le paramètre "Cancel", peut annuler la procédure. Pour empêcher l'impression du classeur, on utilisera : Private Sub Workbook_BeforePrint(Cancel As Boolean ( Cancel = True End Sub Pour récupérer la valeur d'une cellule modifiée, on utilisera : Private Sub Worksheet_Change(ByVal Target As Range ( MsgBox Target.Value End Sub Une macro peut également se déclencher en cliquant sur un élément graphique de l'application (Une image, une zone de texte, un objet WordArt, un rectangle ...). Créez un élément puis cliquez sur "Affecter une macro" dans le menu contextuel . Cliquez sur le nom de la macro désirée puis validez . Un simple clic sur l'objet lancera la uploads/s1/ cours-vba.pdf
Documents similaires










-
73
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 20, 2022
- Catégorie Administration
- Langue French
- Taille du fichier 0.7818MB