Premiers pas avec excel-vba

Ouverture de l’éditeur Visual Basic (VBE)


Étape 1 : Ouvrir un classeur

[![entrez la description de l’image ici][1]][1]


Étape 2 Option A : Appuyez sur Alt + F11

C’est le raccourci standard pour ouvrir le VBE.

Étape 2 Option B : Onglet Développeur –> Afficher le code

Tout d’abord, l’onglet Développeur doit être ajouté au ruban. Allez dans Fichier -> Options -> Personnaliser le ruban, puis cochez la case du développeur.

[![entrez la description de l’image ici][2]][2]

Ensuite, allez dans l’onglet développeur et cliquez sur “Afficher le code” ou “Visual Basic”

[![entrez la description de l’image ici][3]][3]

Étape 2 Option C : onglet Affichage > Macros > Cliquez sur le bouton Modifier pour ouvrir une macro existante

Ces trois options ouvriront l’éditeur Visual Basic (VBE) :

[![entrez la description de l’image ici][4]][4]

[1] : http://i.stack.imgur.com/MHMA9.png [2] : http://i.stack.imgur.com/8WoiR.png [3] : http://i.stack.imgur.com/388eU.png [4] : http://i.stack.imgur.com/azT5a.png

Déclaration de variables

Pour déclarer explicitement des variables dans VBA, utilisez l’instruction Dim, suivie du nom et du type de la variable. Si une variable est utilisée sans être déclarée, ou si aucun type n’est spécifié, le type Variant lui sera attribué.

Utilisez l’instruction “Option Explicit” sur la première ligne d’un module pour forcer la déclaration de toutes les variables avant utilisation (voir https://www.wikiod.com/fr/excel-vba/meilleures-pratiques-vba#Utilisez TOUJOURS “Option Explicit” use-option-explicit#t=201607231503377559602 ).

Toujours utiliser Option Explicit est fortement recommandé car cela permet d’éviter les fautes de frappe/d’orthographe et garantit que les variables/objets conserveront leur type prévu.

Option Explicit

Sub Example()
    Dim a As Integer
    a = 2
    Debug.Print a
    'Outputs: 2

    Dim b As Long
    b = a + 2
    Debug.Print b
    'Outputs: 4

    Dim c As String
    c = "Hello, world!"
    Debug.Print c
    'Outputs: Hello, world!
End Sub

Plusieurs variables peuvent être déclarées sur une seule ligne en utilisant des virgules comme délimiteurs, mais chaque type doit être déclaré individuellement, sinon elles prendront par défaut le type Variant.

Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str)    'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng)    'Output: Long

Les variables peuvent également être déclarées à l’aide de suffixes de caractères de type de données ($ % & ! # @), mais leur utilisation est de plus en plus déconseillée.

 Dim this$  'String
 Dim this%  'Integer
 Dim this&  'Long
 Dim this!  'Single
 Dim this#  'Double
 Dim this@  'Currency

Les autres façons de déclarer des variables sont :

  • Static comme : Static CounterVariable as Integer

Lorsque vous utilisez l’instruction Static au lieu d’une instruction Dim, la variable déclarée conservera sa valeur entre les appels.

  • Public comme : Public CounterVariable as Integer

Les variables publiques peuvent être utilisées dans toutes les procédures du projet. Si une variable publique est déclarée dans un module standard ou un module de classe, elle peut également être utilisée dans tous les projets qui référencent le projet où la variable publique est déclarée.

  • Private comme : Private CounterVariable as Integer

Les variables privées ne peuvent être utilisées que par des procédures d’un même module.

Source et plus d’infos :

[Variables de déclaration MSDN] (https://msdn.microsoft.com/en-us/library/office/gg264241.aspx)

Saisir des caractères (Visual Basic)

Ajout d’une nouvelle référence de bibliothèque d’objets

La procédure décrit comment ajouter une référence de bibliothèque d’objets, puis comment déclarer de nouvelles variables en référence aux nouveaux objets de classe de bibliothèque.

L’exemple ci-dessous montre comment ajouter la bibliothèque PowerPoint au projet VB existant. Comme on peut le voir, la bibliothèque d’objets PowerPoint n’est actuellement pas disponible.

[![entrez la description de l’image ici][1]][1]

Étape 1 : Sélectionnez le menu Outils –> Références… [![entrez la description de l’image ici][2]][2]

Étape 2 : Sélectionnez la référence que vous souhaitez ajouter. Dans cet exemple, nous faisons défiler vers le bas pour trouver " *** Bibliothèque d’objets Microsoft PowerPoint 14.0 *** “, puis appuyez sur " ** OK ** “. [![entrez la description de l’image ici][3]][3]

Remarque : PowerPoint 14.0 signifie que la version Office 2010 est installée sur le PC.

Étape 3 : dans l’éditeur VB, une fois que vous avez appuyé simultanément sur Ctrl+Espace, vous obtenez l’option de saisie semi-automatique de PowerPoint. [![entrez la description de l’image ici][4]][4]

Après avoir sélectionné PowerPoint et appuyé sur ., un autre menu apparaît avec toutes les options d’objets liées à la bibliothèque d’objets PowerPoint. Cet exemple montre comment sélectionner l’objet Application de PowerPoint. [![entrez la description de l’image ici][5]][5]

Étape 4 : l’utilisateur peut désormais déclarer davantage de variables à l’aide de la bibliothèque d’objets PowerPoint.

Déclarez une variable qui fait référence à l’objet Presentation de la bibliothèque d’objets PowerPoint. [![entrez la description de l’image ici][6]][6]

Déclarez une autre variable faisant référence à l’objet Slide de la bibliothèque d’objets PowerPoint. [![entrez la description de l’image ici][7]][7]

Maintenant, la section de déclaration des variables ressemble à la capture d’écran ci-dessous, et l’utilisateur peut commencer à utiliser ces variables dans son code. [![entrez la description de l’image ici][8]][8]

Version codée de ce tutoriel :

Option Explicit

Sub Export_toPPT()

Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide

' here write down everything you want to do with the PowerPoint Class and objects


End Sub

[1] : http://i.stack.imgur.com/0IwJy.jpg [2] : http://i.stack.imgur.com/yfb7J.jpg [3] : http://i.stack.imgur.com/vsKbO.jpg [4] : http://i.stack.imgur.com/6DoDc.jpg [5] : http://i.stack.imgur.com/Av3V7.jpg [6] : http://i.stack.imgur.com/dzCOc.jpg [7] : http://i.stack.imgur.com/QARnI.jpg [8] : http://i.stack.imgur.com/bfQff.jpg

Bonjour le monde

  1. Ouvrez l’éditeur Visual Basic (voir https://www.wikiod.com/fr/excel-vba/premiers-pas-avec-excel-vba#Ouverture de l’éditeur Visual Basic (VBE))
  2. Cliquez sur Insérer –> Module pour ajouter un nouveau Module :

[![entrez la description de l’image ici][1]][1]

  1. Copiez et collez le code suivant dans le nouveau module :

    Sub hello() MsgBox “Hello World !” End Sub

Obtenir :

[![entrez la description de l’image ici][2]][2]

  1. Cliquez sur la flèche verte “play” (ou appuyez sur F5) dans la barre d’outils Visual Basic pour exécuter le programme : [![entrez la description de l’image ici][3]][3]

  2. Sélectionnez le nouveau sous “hello” créé et cliquez sur “Exécuter” : [![entrez la description de l’image ici][4]][4]

  3. Terminé, vous devriez voir la fenêtre suivante :

[![entrez la description de l’image ici][5]][5]

[1] : http://i.stack.imgur.com/0KhKM.png [2] : http://i.stack.imgur.com/wv7kE.png [3] : http://i.stack.imgur.com/aFU8E.png [4] : http://i.stack.imgur.com/Mcj1X.png [5] : http://i.stack.imgur.com/j88GC.png

Premiers pas avec le modèle d’objet Excel

Cet exemple se veut une introduction en douceur au modèle d’objet Excel pour les débutants.


  1. Ouvrez l’éditeur Visual Basic (VBE)
  2. Cliquez sur Affichage –> Fenêtre immédiate pour ouvrir la fenêtre immédiate (ou ctrl + G) :

[![entrez la description de l’image ici][1]][1]

  1. Vous devriez voir la fenêtre immédiate suivante en bas sur VBE :

[![entrez la description de l’image ici][2]][2]

Cette fenêtre vous permet de tester directement du code VBA. Alors commençons, tapez dans cette console :

?Worksheets. 

VBE a intellisense et ensuite il devrait ouvrir une info-bulle comme dans la figure suivante :

[![entrez la description de l’image ici][3]][3]

Sélectionnez .Count dans la liste ou tapez directement .Cout pour obtenir :

?Worksheets.Count
  1. Appuyez ensuite sur Entrée. L’expression est évaluée et doit renvoyer 1. Cela indique le nombre de feuilles de travail actuellement présentes dans le classeur. Le point d’interrogation (?) est un alias pour Debug.Print.

Worksheets est un Objet et Count est une Méthode. Excel a plusieurs objets (Workbook, Worksheet, Range, Chart ..) et chacun d’eux contient des méthodes et des propriétés spécifiques. Vous pouvez trouver la liste complète des objets dans la [Référence Excel VBA][4]. Feuilles de travail L’objet est présenté [ici][5] .

Cette référence Excel VBA devrait devenir votre principale source d’informations concernant le modèle d’objet Excel.

  1. Essayons maintenant une autre expression, tapez (sans le caractère ?):

    Worksheets.Add().Name = “StackOveflow”

  2. Appuyez sur Entrée. Cela devrait créer une nouvelle feuille de calcul appelée StackOverflow. :

[![entrez la description de l’image ici][6]][6]

Pour comprendre cette expression, vous devez lire la fonction Ajouter dans la référence Excel susmentionnée. Vous trouverez les éléments suivants :

Add:  Creates a new worksheet, chart, or macro sheet. 
The new worksheet becomes the active sheet. 
Return Value: An Object value that represents the new worksheet, chart,
 or macro sheet.

Ainsi, Worksheets.Add() crée une nouvelle feuille de calcul et la renvoie. Worksheet (sans s) est lui-même un objet qui [peut être trouvé][7] dans la documentation et Name est l’une de ses propriétés (voir [ici][8]). Il est défini comme :

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.

Ainsi, en étudiant les différentes définitions d’objets, nous sommes en mesure de comprendre ce code Worksheets.Add().Name = "StackOveflow".

Add() crée et ajoute une nouvelle feuille de calcul et lui renvoie une référence, puis nous définissons son nom propriété sur “StackOverflow”


Soyons plus formels, Excel contient plusieurs objets. Ces Objets peuvent être composés d’une ou plusieurs collection(s) d’objets Excel de même classe. C’est le cas de WorkSheets qui est une collection d’objets Worksheet. Chaque objet a des propriétés et des méthodes avec lesquelles le programmeur peut interagir.

Le modèle d’objet Excel fait référence à la hiérarchie d’objets d’Excel

Au sommet de tous les objets se trouve l’objet “Application”, il représente l’instance Excel elle-même. La programmation en VBA nécessite une bonne compréhension de cette hiérarchie car on a toujours besoin d’une référence à un objet pour pouvoir appeler une Méthode ou Set/Get une propriété.

Le modèle d’objet Excel (très simplifié) peut être représenté comme suit :

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range

Une version plus détaillée de l’objet feuille de calcul (comme dans Excel 2007) est présentée ci-dessous,

[![entrez la description de l’image ici][9]][9]

Le modèle d’objet Excel complet peut être trouvé [ici][10].

Enfin, certains objets peuvent avoir des “événements” (ex : “Workbook.WindowActivate”) qui font également partie du modèle d’objet Excel.

[1] : http://i.stack.imgur.com/I57Nk.png [2] : http://i.stack.imgur.com/msMIR.png [3] : http://i.stack.imgur.com/f1i7c.png [4] : https://msdn.microsoft.com/en-us/library/ff194068.aspx [5] : https://msdn.microsoft.com/en-us/library/ff821537.aspx [6] : http://i.stack.imgur.com/7YbHr.png [7] : https://msdn.microsoft.com/en-us/library/ff194464.aspx [8] : https://msdn.microsoft.com/en-us/library/ff841127.aspx [9] : http://i.stack.imgur.com/3yhD8.png [10] : https://msdn.microsoft.com/en-us/library/ff194068(v=office.15).aspx