Cours et projet de développement VBA, tutoriel & guide de travaux pratiques en pdf.
Code VBA
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 :
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 :
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 »
Sub Essai() MsgBox « Bonjour » End Sub
Function Calcul(Nbre1 As Integer, Nbre2 As Integer) Calcul = Nbre1 + Nbre2 End Function
Visual Basic pour Application 2009
‘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
Vocabulaire VBA
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