Nous vous proposons un article de comprendre les bases du langage Excel VBA à travers un seul exemple simple et efficace.
Exemple :
Que fait cette procédure ?
Prenez le temps de réfléchir à chacune des lignes qui composent se code, car vous allez voir qu'en seulement 6 lignes de codes, vous avez énormément de choses à dire…
....
On démarre !
Sub et End Sub
Observez que le mot "Sub" et "End Sub" sont écriées en bleu. Les mots inscrient en bleu sont des mots "clef". Un mot clef est un mot qui est reconnu par VBA et qui à une signification bien précise pour lui.
Une procédure commence toujours par Sub "Nomdelaprocédure" puis se fini par end sub.
Ainsi, après le mot clef Sub, nous avons le nom de la procédure qui s'appelle MaProcedure() et entre Sub et End Sub, nous avons le code qui compose la procédure qui s'appelle MaProcédure.
Dim mavariable:
Dim est aussi un mot clef qui veut dire : dimension. Ici, nous indiquons au code que nous déclarons une variable qui s'appellera mavariable.
Une variable permet de stocker des données. Ces données peuvent être du texte, des nombres, des objets et pourront être utilisée plus tard comme bon vous semble.
Dim mavariable as Byte:
Byte est aussi un mot clef. On indique ici que l'on déclare une variable ("Dim mavariable") et que l'on souhaite restreinte le choix des données que la variable peut prendre.
Avec "Byte" on indique que la variable "mavariable" peut avoir comme donnée uniquement des chiffres entiers positifs compris entre [0 et 255] (comme le montre les [] 0 et 255 sont inclus).
Pour les types de variable, vous avez un tableau qui récapitule cela très bien, mais est seulement valable pour le langage VBA.
mavariable=10:
Attention, cette notation n'a rien à voir avec ce que vous avez pu voir dans des cours de mathématique classique. En programmation informatique et en VBA le symbole "=" ne veut pas forcément dire que nous avons une notion d'égalité !!
Nous avons ici une notion d'affectation.
Dans cet exemple nous n'indiquons pas que les deux cotés du symbole "=" sont égaux, nous indiquons que la valeur de droite du signe égal (10) sera affecter à la valeur de gauche de l'égal (mavariable)
Pour résumer, après lecture du code, la variable mavariable va prendre la valeur 10.
mavariable = mavariable +1:
Nous avons le même principe que le paragraphe ci-dessus : c'est une notion d'affectation.
Ce qui est à droite du symbole "=" va être lu et résolu :
mavariable +1 équivaux à 10+1 cela fait 11
ensuite le code considéra la ligne suivante mavariable = 11
Ainsi la variable "mavariable" après lecture de la ligne aura pour valeur 11.
ActiveSheet.Cells(1, 5).Value = mavariable :
Vous l'avez compris, nous avons aussi une notion d'affectation.
La valeur de mavariable (11) va être transmise à "ActiveSheet.Cells(1, 5).Value"
ActiveSheet correspond à un objet de type SHEET qui est votre feuille Excel active.
Cells(1,5) correspond à un objet de type RANGE et indique que vous pointez vers la cellule située en ligne 1 et en colonne 5 (cellule "E1")
Value est une propriété de votre objet Range qui indique la valeur.
Concrètement, vous souhaitez que la variable mavariable donne sa valeur (11) sur votre feuille active (ActiveSheet) et plus précisément dans la cellule E5 (Cells(1, 5)).value.
Autrement dit : vous allez inscrire 11 dans la cellule E5 de votre feuille active.
Si à la place de value, il était inscrit "Font.Size". Vous aurez modifié la taille (Size) de la police d'écriture(Font) situé dans votre cellule en E5 par 11.
Zoom sur les objets remarquables en Excel VBA
Il y a des objets en Excel VBA qui vaut mieux connaitre sur le bout des doigts, ce sont les objets remarquables. Nous vous avons listé les objets indispensable et indiqué leurs fonctionnements.
L’objet Workbook = Classeur
Cet objet représente un classeur Microsoft Excel. Saviez-vous que vous pouvez contrôle plusieurs classeurs en même temps ? Voici la syntaxe qui vous permettra de bien les distinguer.
On peut pointer un Workbook par de quatre manières différentes. Elles sont toutes utiles en fonction du contexte.
Nom : Le nom du Workbook
Exemple : Workbooks(« Exercice.xlsm »)
Simple et efficace, n'oubliez pas d'indiquer l'extension du fichier ( ici .xlsm) lorsque vous utilisez cette méthode.
Index : Le numéro d'index indique l'ordre dans lequel les classeurs ont été ouverts ou créés.
Exemple : Workbooks(1)
Cette méthode peut être utile lorsque vous utilisez les boucles logiques (For next par exemple)
Le Workbook Actif
Exemple : ActiveWorkbook
C'est votre classeur actif, si vous ne l'indiquez pas, c'est lui qui sera tout de même sélectionné par défaut par VBA
Par le classeur dans lequel le code Visual Basic est exécuté
Exemple : ThisWorkbook : classeur qui contient le code qui sera désigné
Très utile lorsqu'on ne manipule que deux workbooks, thisworkbook c'est effectivement le workbook qui a exécuté la procédure en cours.
L’objet Worksheet = feuille de calcul
Cet objet représente une feuille de calcul Excel. Il est membre de la collection Worksheets de l’objet Workbook
Cet objet est renvoyé par les propriétés suivantes de l’objet Application :
· Par le nom à Worksheets("Europe")
· Par l’index à Worksheets (1)
L'index correspond à la position de l'onglet dans le classeur. La feuille de gauche porte l'index 1
Par la feuille active : ActiveSheet
Par le CodeName : Feuil2
Le CodeName représente le nom de l'objet Feuille dans l'éditeur de macros.
Il ne faut pas le confondre avec le nom de l'onglet.
Les 2 sont identiques par défaut, mais le CodeName ne change pas lorsque vous modifiez le nom d'un onglet.
Distinction entre Worksheet et Sheet
· Worksheet représente une feuille de calcul
· Sheet représente n'importe quelle feuille, quel que soit son type (feuille de calcul, graphique…)
L’objet Range
L’objet Range représente une plage de cellules pouvant être constituée :
· d’une cellule ;
· d’une ligne ; d’une colonne ;
· d’une plage de cellules contiguës ; d’une plage de cellules disjointes ;
Exemple :
· Range("A1")
· Cells (2,1)
En résumé :
En seulement six lignes de code Excel VBA, vous avez énormément de notion à apprendre et à comprendre. Si vous souhaitez avoir une formation sur le sujet (Excel VBA 3jours) n'hésitez pas à nous contacter via notre fiche contact et nous indiquer votre besoin. Nos formations sont sur-mesure.
Merci d'avoir pris le temps et à très bientôt pour un nouveau post !
Comments