excel-vba Tutoriel
Démarrer avec excel-vba
Recherche…
Remarques
Microsoft Excel inclut un langage de programmation macro complet appelé VBA. Ce langage de programmation vous fournit au moins trois ressources supplémentaires:
- 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.
- Créez de nouvelles fonctions de feuille de calcul personnalisées.
- 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 classeWorksheetFunction
et les méthodes respectives
✓ Utilisation de l'énumérationxlDirection
pour parcourir une plage
exemples hors sujet:
✗ Comment créer une boucle 'pour chaque'
Class ClasseMsgBox
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 |
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:
Caractères de type (Visual Basic)
Ouverture de l'éditeur Visual Basic (VBE)
Étape 1: Ouvrir un classeur
É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.
Ensuite, allez à l'onglet développeur et cliquez sur "Afficher le code" ou "Visual Basic"
É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):
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.
Étape 1 : Sélectionnez Outils de menu -> Références…
É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 ».
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.
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.
É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.
Déclarez une autre variable faisant référence à l'objet Slide
de la bibliothèque d'objets PowerPoint.
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.
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
Bonjour le monde
- Ouvrez Visual Basic Editor (voir Ouverture de Visual Basic Editor )
- Cliquez sur Insérer -> Module pour ajouter un nouveau module:
- Copiez et collez le code suivant dans le nouveau module:
Sub hello()
MsgBox "Hello World !"
End Sub
Obtenir :
Cliquez sur la flèche verte "play" (ou appuyez sur F5) dans la barre d'outils Visual Basic pour exécuter le programme:
Sélectionnez le nouveau sous créé "hello" et cliquez sur
Run
:Fait, vous devriez voir la fenêtre suivante:
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 .
- Ouvrez l'éditeur Visual Basic (VBE)
- Cliquez sur Afficher -> Fenêtre immédiate pour ouvrir la fenêtre Immédiat (ou Ctrl + G ):
- Vous devriez voir la fenêtre suivante en bas sur VBE:
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:
Sélectionnez .Count dans la liste ou tapez directement .Cout
pour obtenir:
?Worksheets.Count
- 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.
- Essayons maintenant une autre expression, tapez (sans le caractère
?
):
Worksheets.Add().Name = "StackOveflow"
- Appuyez sur Entrée. Cela devrait créer une nouvelle feuille de calcul appelée
StackOverflow.
:
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.
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.