Comment débuter en programmation VBA sous Excel 1/2

Vous souhaitez apprendre à programmer et vous avez lu mon article pour choisir votre premier langage ? Vous utilisez beaucoup Excel et souhaitez donc apprendre à programmer en VBA ? Comment faire ?

Créer son premier code VBA

Vous devrez commencer par afficher le menu “développeur” d’Excel. Ce menu est masqué par défaut :
Sous la dernière version d’Excel, devez aller dans le menu Fichier / Options / Personaliser le ruban
Dans la seconde partie de l’écran, cochez la case “Développeur”, puis cliquez sur OK.
Cela va afficher le menu de développement et vous permettre d’accéder aux fonctionnalités liées aux macros VBA.

La macro Hello World

Je vous propose de faire un premier code simple pour découvrir le VBA : affichons le traditionnel “Hello world”.
Le plus simple pour débuter du code VBA est de demander à Excel de le générer, vous aurez moins de choses à faire 😉.
Dans le menu Développeur, choisissez “Enregistrer une macro”.
Changez le nom pour HelloWorld (attention, pas d’espace ni de caractère accentué dans un nom de macro !!!!).
Vérifiez que la macro va s’enregistrer dans “ce classeur”, changez si besoin.
Puis saisissez OK.
La macro est en cours d’enregistrement, vous pouvez le voir au fait que vous pouvez stopper l’enregistrement en haut à gauche.
Arrêtez l’enregistrement sans avoir rien fait d’autre. Oui, je me sers de cette astuce pour faire générer à Excel tout ce qu’il faut pour avoir une macro sans effort 🙂.
Cliquez ensuite sur le bouton Visual Basic pour ouvrir la fenêtre d’édition de code :
Il vous faut ensuite ouvrir le dossier Modules et double cliquer sur le Module1.
 
Vous pouvez voir qu’une macro c’est tout simplement une procédure (pour le moment, vous pouvez comprendre “un bout de programme”) qui porte un nom et qui débute par Sub et fini par End Sub.
Je vous propose ensuite d’écrire le code suivant : MsgBox(“Hello World”)
Pour exécuter votre première macro, il suffit de cliquer sur l’icône qui ressemble au bouton “Lecture” des lecteurs DVD/audio. C’est le bouton “Executer”.
Il est aussi accessible via le menu Execution puis “Executer Sub/UserForm”, ou même via le raccourci F5.
Attention, vous devez avoir le curseur dans la procédure.
Vous obtenez le message “Hello World” :

Petite note sur l’anglais

Vous constaterez que dans les langages de programmation, tous les mots clés sont en anglais. Il se trouve qu’en toute logique, lorsqu’un inventeur créé un langage, il choisit les mots clés dans sa langue. Certains langages ont été créés par des Français et vous permettent d’utiliser des mots clés français. Vous avez Windev par exemple. Si ce critère est important pour vous, étudiez cette plateforme. Ceci dit je vous recommande au contraire de vous ouvrir à tous les langages, et donc à accepter les mots clés anglais. La diversité des langages et des technologies est bien plus grande, vous pourrez faire bien plus de choses. De plus, vous constaterez avec le temps que c’est de l’anglais très simple. Il s’agit juste de donner des instructions à l’ordinateur, pas de tenir une discussion avec lui sur les derniers résultats de la ligue Europa (ou votre sport favori).

Une fonction pour des calculs simples

Modifions maintenant notre code pour faire des calculs simples. Remplacez Sub par Function et End Sub devrait être automatiquement remplacé par End Function (pratique Excel 😉).
Changez le nom de la macro de HelloWorld en MaPremiereSomme (oui, nous allons faire des calculs).
Remplacer le code MsgBox(“HelloWorld”) par :
MaPremiereSomme = 2 + 3
Vous devriez avoir le code suivant :
 
Vous pouvez vous séparer des lignes en commentaires, ce sont ces lignes commençant par un caractère ‘ et affichées en vert par Excel. Le commentaire indiqué est déjà faux vu qu’il indique l’ancien nom de procédure et que nous l’avons changé. Plutôt que de changer le nom dans le commentaire, je vous propose d’apprendre tout de suite que le nom est en haut, juste après Sub ou Fucntion, comme ça le commentaire n’est plus utile 😉.
Attention, nous ne pouvons pas lancer l’exécution de la même manière que tout à l’heure. En effet, la première méthode ne fonctionne que pour les procédures ! Là nous avons fait une fonction. La différence c’est que notre bout de code rend une valeur. Pour rendre la valeur, nous reprenons le nom de la fonction, ici MaPremiereSomme, et nous lui affectons une valeur à rendre avec le symbole =.
Notre code correspond donc à réaliser le calcul 2 + 3 et à le rendre en valeur de retour de la fonction.
Pour tester ce code, il faut retourner dans une feuille de calcul du classeur Excel. Dans une cellule vous écrivez =MaPremiereSomme().
Puis vous appuyez sur la touche Entrée pour valider votre saisie.
Vous allez voire apparaître 5 dans la cellule, ce qui est le résultat du calcul 2 + 3 🙂 !

Des calculs un peu plus utiles

Bon, jusque là, c’est agréable de faire cela pour la première fois, mais pas très utile.
Voyons comment être plus utile…
Imaginons que vous ayez un tableau rempli de chiffres et vous souhaitez faire un calcul dessus. Pour rester simple, la somme de tous les chiffres.
Dans le code, vous devez ajouter autant de paramètres que voulu. Pour créer un paramètre, il faut ajouter un nom entre les parenthèses juste après le nom de la fonction.
Vous pouvez en mettre autant que nécessaire. Par exemple valeur1, valeur2, valeur3, valeur4, etc.
Ensuite, vous pouvez remplacer votre calcul 2 + 3 par le calcul voulu en utilisant tous vos paramètres.
Nous avions dit la somme de tous les nombres :
valeur1 + valeur2 + valeur3 + valeur4, etc.
Le code :
Function MaPremiereSomme(valeur1, valeur2, valeur3, valeur4)
    MaPremiereSomme = valeur1 + valeur2 + valeur3 + valeur4
End Function
Et aussi la copie d’écran correspondante :
Entrez dans la cellule comme pour l’éditer, puis faire “Entrée” pour forcer Excel à exécuter à nouveau la fonction. Vous obtenez la valeur suivante :
C’est normal, vous demandez des paramètres dans votre code, mais vous ne les donnez pas lors de l’appel. Pour corriger cela il suffit de mettre des valeurs entre les parenthèses en les séparant par des “;” , par exemple =MaPremiereSomme(3;4;7;2).
Vous obtenez alors la somme 16.

Avec des références

C’est bien, sans être si utile, car les calculs que vous pouvez faire directement dans une cellule Excel sont plus pratiques vu que vous pouvez mettre des références à des cellules !
Eh bien là aussi ! Grâce à la puissance d’Excel, vous pouvez également remplacer les valeurs par des références vers des cellules. Par exemple :
=MaPremiereSomme(A1;A2;A3;A4)
Il vous reste à saisir des valeurs dans chacune des cellules pour obtenir le résultat :
Vous noterez que j’ai simplement ajouté le libellé “Somme” sur la cellule juste au-dessus.
Nous pouvons maintenant faire n’importe quel calcul sans toucher au code VBA 🙂 :
 
Pour être plus pratiques, nous pouvons tout mettre en ligne et préfixer avec des titres pour chaque colonne.
Mettez “Valeur 1”, “Valeur 2”, “Valeur 3”, “Valeur 4”, “Somme :” dans les 5 premières cellules de la première ligne.
Puis remplissez les 4 premières cellules de la seconde ligne avec des valeurs à additionner, et en cinquième ligne mettez l’appel de la fonction :
=MaPremiereSomme(A2;B2;C2;D2)
Vous noterez que les références des cellules ont changé.
Pour connaître la référence, il suffit de regarder la lettre qu’Excel indique en haut de colonne et le chiffre qu’Excel indique en début de ligne :
Dans le prochain article, je vous expliquerais comment réutiliser facilement cette fonction et comment tester facilement votre code VBA.

Crédits photo

Partager l'article
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.