La plate-forme de programmation VBA qui fonctionne dans presque tous les produits Microsoft Office est l’un des outils les plus puissants que l’on puisse utiliser pour améliorer son utilisation de ces produits.
Ce guide VBA pour les débutants vous montrera comment ajouter le menu Développeur à votre application Office, comment accéder à la fenêtre de l’éditeur VBA et comment les instructions et boucles VBA de base fonctionnent afin que vous puissiez commencer à utiliser VBA dans Excel, Word, Powerpoint, Outlook et OneNote.
Ce guide VBA utilise la dernière version des produits Microsoft Office. Si vous avez une version antérieure, vous pouvez voir de légères différences par rapport aux captures d’écran.
Dans l’un des produits Office utilisés dans ce guide, vous remarquerez peut-être que vous ne disposez pas du menu Développeur référencé. Le menu développeur n’est disponible que dans Excel, Word, Outlook et Powerpoint. OneNote ne propose pas d’outil pour modifier le code VBA à partir de l’application, mais vous pouvez toujours référencer l’API OneNote pour interagir avec OneNote à partir d’autres programmes Office.
Vous apprendrez comment faire cela dans notre prochain guide Advanced VBA.
La liste de gauche comprend tous les menus et commandes de menu disponibles dans cette application Office. La liste de droite est celle qui est actuellement disponible ou activée.
Vous remarquerez que lorsque l’éditeur VBA s’ouvre, les options de navigation dans le panneau de gauche sont différentes d’une application Office à l’autre.
En effet, les objets disponibles dans lesquels vous pouvez placer le code VBA dépendent des objets présents dans l’application. Par exemple, dans Excel, vous pouvez ajouter du code VBA à des objets de classeur ou de feuille. Dans Word, vous pouvez ajouter du code VBA aux documents. Dans Powerpoint, uniquement aux modules.
Alors, ne soyez pas surpris par les différents menus. La structure et la syntaxe du code VBA sont les mêmes dans toutes les applications. La seule différence réside dans les objets que vous pouvez référencer et les actions que vous pouvez effectuer sur ces objets via le code VBA.
Avant de nous plonger dans les différents objets et actions que vous pouvez entreprendre via le code VBA, examinons d’abord la structure et la syntaxe VBA les plus courantes que vous pouvez utiliser lorsque vous écrivez du code VBA.
Lorsque vous êtes dans l’éditeur VBA, vous devez utiliser les deux listes déroulantes en haut de la fenêtre d’édition pour choisir l’objet auquel vous souhaitez attacher le code et quand vous voulez que le code s’exécute.
Par exemple, dans Excel, si vous choisissez Feuille de travail et Activer, le code s’exécutera à chaque ouverture de la feuille de calcul.
D’autres actions de feuille de calcul que vous pouvez utiliser pour déclencher votre code VBA incluent lorsque la feuille de calcul change, lorsqu’elle est fermée (désactivée), lorsque le calcul de la feuille de calcul est exécuté, etc.
Lorsque vous ajoutez du code VBA dans l’éditeur, assurez-vous toujours de placer votre code VBA sur l’objet et d’utiliser l’action correcte que vous souhaitez utiliser pour déclencher ce code.
Une instruction IF fonctionne dans VBA comme dans n’importe quel autre langage de programmation.
La première partie de l’instruction IF examine si une condition ou un ensemble de conditions est vrai. Ces conditions peuvent être jointes par un opérateur AND ou OR pour les relier.
Un exemple serait de vérifier si une note dans une feuille de calcul est au-dessus ou en dessous d’une note «de passage», et d’attribuer le statut de réussite ou d’échec à une autre cellule.
Si Cells (2, 2)> 75 Then Cells (2, 3) = “Pass” Else Cells (2, 3) = “Fail”
Si vous ne voulez pas que l’instruction entière sur une seule ligne, vous pouvez la diviser en plusieurs lignes en ajoutant un symbole «_» à la fin des lignes.
Si Cellules (2, 2)> 75 Alors _
Cellules (2, 3) = «Réussir» Sinon _
Cells (2, 3) = “Fail”
L’utilisation de cette technique peut souvent rendre le code beaucoup plus facile à lire et à déboguer.
Les instructions IF sont idéales pour les comparaisons uniques, comme l’exemple ci-dessus de regarder une seule cellule. Mais que se passe-t-il si vous souhaitez parcourir une plage entière de cellules et faire la même instruction IF sur chacune?
Dans ce cas, vous aurez besoin d’une boucle FOR.
Pour ce faire, vous devez utiliser la longueur d’une plage et parcourir cette longueur en fonction du nombre de lignes contenant des données.
Pour ce faire, vous devez définir la plage et les variables de cellule et les parcourir en boucle. Vous devrez également définir un compteur afin de pouvoir afficher les résultats dans la ligne appropriée. Donc, votre code VBA aurait d’abord cette ligne.
Dim rng As Range, cellule As Range
Dim rowCounter as Integer
Définissez la taille de la plage comme suit.
Set rng = Range (“B2: B7”)
rowCounter = 2
Enfin, vous pouvez créer votre boucle FOR pour parcourir chaque cellule de cette plage et effectuer la comparaison.
For Each cell In rng If cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
Une fois ce script VBA exécuté, vous voyez les résultats dans la feuille de calcul réelle.
Une boucle While effectue également une boucle sur une série d’instructions, tout comme la boucle FOR, mais la condition de la boucle pour continuer est une condition qui reste vraie.
Par exemple, vous pouvez écrire la même boucle FOR ci-dessus, comme une boucle WHILE, en utilisant simplement la variable rowCounter comme suit.
While rowCounter < rng.Count + 2 If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Wend
Noter la rng.Count + 2 La limite de fin est requise car le compteur de lignes commence à 2 et doit se terminer à la ligne 7 où les données se terminent. Cependant, le compte de la plage (B2: B7) n’est que de 6, et la boucle While ne se terminera qu’une fois que le compteur est PLUS GRAND que le compteur – donc la dernière valeur rowCounter doit être 8 (ou rng.Count + 2).
Vous pouvez également configurer la boucle While comme suit:
Alors que rowCounter <= rng.Count + 1
Vous ne pouvez incrémenter le nombre de plages (6) que de 1, car une fois que la variable rowCounter atteint la fin des données (ligne 7), la boucle peut se terminer.
Les boucles Do While et Do Until sont presque identiques aux boucles While, mais fonctionnent légèrement différemment.
Dans ce cas, vous réécrivez la boucle While ci-dessus comme suit, en tant que boucle Do-While.
Do If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Loop While rowCounter < rng.Count + 2
Dans ce cas, la logique ne change pas beaucoup, mais si vous voulez vous assurer que la comparaison logique a lieu après que toutes les instructions ont été exécutées (leur permettant toutes de s’exécuter quoi qu’il arrive au moins une fois), alors un Do-While ou la boucle Do-Until est la bonne option.
Le dernier type d’instruction logique que vous devrez comprendre pour commencer à structurer votre code VBA sont les instructions Select Case.
Compte tenu de l’exemple ci-dessus, supposons que vous souhaitiez avoir une méthode de notation qui ne soit pas simplement une réussite. Au lieu de cela, vous souhaitez attribuer une note de lettre de A à F.
Vous pouvez le faire avec l’instruction Select Case suivante:
For Each cell In rng Select Case cell Case 95 To 100 Cells(rowCounter, 3) = "A" Case 85 To 94 Cells(rowCounter, 3) = "B" Case 75 To 84 Cells(rowCounter, 3) = "C" Case 65 To 74 Cells(rowCounter, 3) = "D" Case 0 To 64 Cells(rowCounter, 3) = "F" End Select rowCounter = rowCounter + 1 Next cell
La feuille de calcul obtenue après l’exécution de ce script VBA ressemble à celle ci-dessous.
Vous savez maintenant tout ce que vous devez savoir pour commencer à utiliser VBA dans vos applications Microsoft Office.