excel-vbaDémarrer avec excel-vba


Remarques

Microsoft Excel inclut un langage de programmation macro complet appelé VBA. Ce langage de programmation vous fournit au moins trois ressources supplémentaires:

  1. Piloter automatiquement Excel à partir du code en utilisant des macros. Pour l'essentiel, tout ce que l'utilisateur peut faire en manipulant Excel depuis l'interface utilisateur peut être fait en écrivant du code dans Excel VBA.
  2. Créez de nouvelles fonctions de feuille de calcul personnalisées.
  3. Interagir avec Excel avec d'autres applications telles que Microsoft Word, PowerPoint, Internet Explorer, le Bloc-notes, etc.

VBA signifie Visual Basic pour Applications. Il s'agit d'une version personnalisée du vénérable langage de programmation Visual Basic qui alimente les macros de Microsoft Excel depuis le milieu des années 1990.

IMPORTANT
Veuillez vous assurer que tous les exemples ou sujets créés dans la balise excel-vba sont spécifiques et pertinents pour l'utilisation de VBA avec Microsoft Excel. Tout sujet ou exemple suggéré qui est générique au langage VBA devrait être refusé afin d'éviter la duplication des efforts.

  • exemples sur le sujet:

    Créer et interagir avec des objets de feuille de travail
    La classe WorksheetFunction et les méthodes respectives
    Utilisation de l'énumération xlDirection pour parcourir une plage

  • exemples hors sujet:

    Comment créer une boucle 'pour chaque'
    Class Classe MsgBox et comment afficher un message
    Utilisation de WinAPI dans VBA


Versions

VB

Version Date de sortie
VB6 1998-10-01
VB7 2001-06-06
WIN32 1998-10-01
WIN64 2001-06-06
MAC 1998-10-01

Exceller

Version Date de sortie
16 2016-01-01
15 2013-01-01
14 2010-01-01
12 2007-01-01
11 2003-01-01
dix 2001-01-01
9 1999-01-01
8 1997-01-01
7 1995-01-01
5 1993-01-01
2 1987-01-01

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

La procédure décrit comment ajouter une référence à une 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.

entrer la description de l'image ici

Étape 1 : Sélectionnez Outils de menu -> Références… entrer la description de l'image ici

Étape 2 : Sélectionnez la référence à ajouter. Cet exemple, nous faisons défiler pour trouver « Bibliothèque d'objets Microsoft PowerPoint 14.0 », puis appuyez sur « OK ». entrer la description de l'image ici

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

Étape 3 : dans l'éditeur VB, une fois que vous appuyez sur Ctrl + Espace , vous obtenez l'option de saisie semi-automatique de PowerPoint. entrer la description de l'image ici

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 PowerPoint. entrer la description de l'image ici

Étape 4 : L'utilisateur peut maintenant déclarer plus de variables à l'aide de la bibliothèque d'objets PowerPoint.

Déclarez une variable faisant référence à l'objet Presentation de la bibliothèque d'objets PowerPoint. entrer la description de l'image ici

Déclarez une autre variable faisant référence à l'objet Slide de la bibliothèque d'objets PowerPoint. entrer la description de l'image ici

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. entrer la description de l'image ici

Version de code 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
 

Déclaration des 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 affecté.

Utilisez l'instruction Option Explicit sur la première ligne d'un module pour forcer toutes les variables à être déclarées avant utilisation (voir TOUJOURS utiliser "Option Explicit" ).

Il est fortement recommandé d'utiliser toujours Option Explicit car cela permet d'éviter les fautes de frappe et les fautes d'orthographe et garantit que les variables / objets resteront conformes au type souhaité.

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 en tant que délimiteurs, mais chaque type doit être déclaré individuellement ou par défaut dans 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 des 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 les suivantes:

  • 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 like: 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 faisant référence au projet dans lequel la variable publique est déclarée.

  • Private comme: Private CounterVariable as Integer

Les variables privées ne peuvent être utilisées que par les procédures du même module.

Source et plus d'infos:

Variables déclarant MSDN

Caractères de type (Visual Basic)

Démarrer avec le modèle d'objet Excel

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


  1. Ouvrez l'éditeur Visual Basic (VBE)
  2. Cliquez sur Afficher -> Fenêtre immédiate pour ouvrir la fenêtre Immédiat (ou Ctrl + G ):

entrer la description de l'image ici

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

entrer la description de l'image ici

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

?Worksheets. 
 

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

entrer la description de l'image ici

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

?Worksheets.Count
 
  1. Puis appuyez sur Entrée. L'expression est évaluée et doit renvoyer 1. Cela indique le nombre de feuilles de calcul 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 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 . Feuilles de travail L'objet est présenté ici .

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"
 
  1. Appuyez sur Entrée. Cela devrait créer une nouvelle feuille de calcul appelée StackOverflow. :

entrer la description de l'image ici

Pour comprendre cette expression, vous devez lire la fonction Ajouter dans la référence Excel susmentionnée. Vous trouverez ce qui suit:

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.
 

Donc, les Worksheets.Add() créent une nouvelle feuille de calcul et la renvoient. La feuille de travail ( sans s ) est elle-même un objet qui peut être trouvé dans la documentation et Name est l'une de ses propriétés (voir ici ). Il est défini comme suit:

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 pouvons comprendre ce code Worksheets.Add().Name = "StackOveflow" .

Add() crée et ajoute une nouvelle feuille de calcul et y renvoie une référence , puis nous définissons sa propriété Name 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 la même classe. C'est le cas pour WorkSheets qui est une collection d'objets Worksheet . Chaque objet possède 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'objet Excel

En haut 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 nous avons toujours besoin d'une référence à un objet pour pouvoir appeler une méthode ou définir / obtenir 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 Worksheet (comme dans Excel 2007) est présentée ci-dessous.

entrer la description de l'image ici

Le modèle d'objet Excel complet peut être trouvé ici .

Enfin, certains objets peuvent avoir des events (ex: Workbook.WindowActivate ) qui font également partie du modèle d'objet Excel.

Bonjour le monde

  1. Ouvrez Visual Basic Editor (voir Ouverture de Visual Basic Editor )
  2. Cliquez sur Insérer -> Module pour ajouter un nouveau module:

entrer la description de l'image ici

  1. Copiez et collez le code suivant dans le nouveau module:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

Obtenir :

entrer la description de l'image ici

  1. Cliquez sur la flèche verte "play" (ou appuyez sur F5) dans la barre d'outils Visual Basic pour exécuter le programme: entrer la description de l'image ici

  2. Sélectionnez le nouveau sous créé "hello" et cliquez sur Run : entrer la description de l'image ici

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

entrer la description de l'image ici

Ouverture de l'éditeur Visual Basic (VBE)


Étape 1: Ouvrir un classeur

entrer la description de l'image ici


É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.

entrer la description de l'image ici

Ensuite, allez à l'onglet développeur et cliquez sur "Afficher le code" ou "Visual Basic"

entrer la description de l'image ici

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

Ces trois options ouvriront Visual Basic Editor (VBE):

entrer la description de l'image ici