manuel des fonctions de base visual basic office … · dans votre application office préférée....
TRANSCRIPT
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
MANUEL DES FONCTIONS DE BASE
VISUAL BASIC – OFFICE 2011
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Prendre en main VBA dans Office pour Mac 2011
Applicable à : Word pour Mac 2011, Excel pour Mac 2011, PowerPoint pour Mac 2011
Puissant et facile à utiliser, l’outil de programmation Visual Basic pour Applications
(VBA) dans Office pour Mac 2011 vous permet d’automatiser les tâches répétitives
dans votre application Office préférée. Par exemple, avez-vous déjà modifié le style
d’un paragraphe en haut de plusieurs dizaines de pages dans Word ? La plupart
des modifications de format ou autre que vous apportez manuellement peuvent
être effectuées manuellement dans VBA.
Ce guide vous aide à créer votre premier script VBA automatisé pour Office (ou
macro). Il vous donne également des informations sur le code que vous créez et
vous oriente vers des ressources supplémentaires pour vous aider à approfondir
votre connaissance de VBA.
Commençons par créer notre première macro avec l’enregistreur de macro
Voici les étapes que nous aborderons dans ce guide pour vous aider à prendre en
main VBA dans Office pour Mac 2011.
Étape 1 : prendre en main l’enregistreur de macro
Étape 2 : lire et comprendre le code
Étape 3 : découvrir les principes de base de la programmation
Étape 4 : partager votre macro avec d’autres utilisateurs
Étape 5 : exemples réels
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Étape 1 : prendre en main l’enregistreur de macro
Pour commencer à programmer avec VBA dans Office pour Mac 2011, le plus
simple consiste à utiliser l’enregistreur de macro. Celui-ci enregistre simplement une
tâche que vous effectuez dans votre application Office, puis la convertit en code
VBA. Vous pouvez ensuite consulter le code généré pour déterminer le code VBA
utilisé pour effectuer cette action.
Vous vous demandez peut-être pourquoi il convient d’apprendre à coder si
l’enregistreur peut faire ce travail ? Dans le cadre de l’utilisation de l’enregistreur de
macro pour créer des macros, vous découvrirez peut-être qu’il existe certaines
limites à ce que vous pouvez enregistrer et vous devrez examiner le code plus en
détail pour créer des fonctionnalités plus complexes dans votre macro.
Voyons un exemple d’enregistrement de la tâche de suppression d’une ligne d’un
tableau dans Word.
1. Commencez par créer un tableau dans Word.
2. Placez votre curseur dans la première cellule du tableau. Dans l’exemple ci-
dessus, nous allons placer le curseur sur la cellule Andrew.
3. Cliquez sur Outils > Macro > Nouvelle macro
4. Modifiez le nom de la macro en DeleteRow, puis cliquez sur OK.
Conseil : le nom de la macro ne peut pas contenir des espaces ou des caractères
spéciaux.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
1. À présent que l’enregistreur est démarré, sélectionnez l’onglet Disposition du
tableau, puis cliquez sur Supprimer > Supprimer les lignes.
2. Arrêtez l’enregistreur de macro en cliquant sur Outils > Macro > Arrêter
l’enregistrement.
À présent que vous avez enregistré votre action, examinons le code.
Remarque : l’enregistreur de macro n’enregistre pas la frappe.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Étape 2 : lire et comprendre le code
Au cours de l’étape 1, vous avez enregistré votre première macro VBA pour
supprimer une ligne. Examinons à présent le code généré par l’enregistreur de
macro.
Pour afficher le code, cliquez sur Outils > Macro > Visual Basic Editor. Voici ce que
vous verrez :
Sub DeleteRow()
DeleteRow Macro
Selection.Rows.Delete
End Sub
Passons en revue chaque ligne de cette macro :
1. Sub DeleteRow
Toutes les macros commencent et se terminent par les mots clés Sub et End
Sub respectivement. Dans l’exemple ci-dessus, DeleteRowest le nom de la
macro ou de la procédure que vous avez créée.
2. DeleteRow Macro
Ces commentaires permettent de décrire ce qui se passe dans votre code. Ils
sont particulièrement utiles lorsque votre code devient plus complexe et que
d’autres personnes doivent le gérer, ou lorsque vous réexaminez votre code
après un certain temps. Les commentaires commencent toujours par un
guillemet simple, et la couleur de police devient verte dans Visual Basic Editor
pour vous aider à différencier les commentaires des autres parties de votre
code.
3. Selection.Rows.Delete
Cette ligne de code indique à Word comment procéder. En l’occurrence,
sélectionner la ligne et la supprimer.
À présent que vous avez créé votre première macro et examiné les parties de base
dans une macro, nous allons passer à la section suivante dans laquelle vous
découvrirez quelques principes de base de programmation.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Étape 3 : découvrir les principes de base de la programmation
Nous avons vu comment enregistrer une macro et avons étudié le principe de
création des procédures VBA. La prochaine étape consiste à approfondir les
notions fondamentales pour acquérir des bases solides en matière de
programmation VBA.
Concepts de base de VBA : objets, méthodes et propriétés
La première chose à savoir est que le code VBA est assemblé d’une manière qui
imite la façon dont vous décririez les éléments qui vous entourent. Ce code
s’articule autour des quatre concepts suivants :
Concept Description Exemple
Objet Un « élément » Feuille de calcul
Méthode Action, ou quelque chose qu’un « élément » peut
accomplir
Ajouter un
« élément »
Propriété Description, ou caractéristique d’un « élément » Nom
Collection Un groupe « d’éléments » Feuilles de calcul
Réunis, ces quatre concepts représentent ce que les programmeurs appellent un
modèle de programmation orienté objet. Vous pouvez ainsi accomplir une tâche
en décrivant « l’élément » (c’est-à-dire, « l’objet ou la collection ») sur lequel vous
voulez agir, les caractéristiques particulières (c’est-à-dire, la « propriété ») de
l’élément sur lequel vous voulez agir, et la manière (c’est-à-dire, la « méthode »)
utilisée pour effectuer votre action.
Reprenons notre code à partir de l’étape 2 :
Sub DeleteRow()
DeleteRow Macro
Selection.Rows.Delete
End Sub
Dans la ligne, Selection.Rows.Delete, Selection représente l’objet, ou « l’élément »
auquel vous faites référence dans le code. Vous avez décrit cet « élément » plus en
détail en indiquant que vous vouliez agir sur la propriété Rows. Ensuite, vous avez
appliqué la méthode de suppression de la ligne avec la syntaxe Delete.
Ces concepts peuvent vous sembler déconcertants au premier abord. Essayez
toutefois de formuler ce que vous tentez d’accomplir et identifiez « l’élément » sur
lequel vous allez travailler, les caractéristiques de cet « élément » et l’action à
effectuer sur cet « élément ». Avec un peu de pratique et de persévérance, vous
serez en bonne voie pour créer des macros VBA puissantes.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Voici deux autres concepts qui vous seront utiles si vous voulez créer des macros
VBA pratiques.
If This Then That : L’instruction If…Then est un outil de programmation qui vous
permet de contrôler le type d’action que vous souhaitez réaliser en fonction de
certains types de critères. Par exemple, supposons que vous souhaitiez que tout le
texte Titre 1 utilise le format Helvetica 16 points avec une mise en forme Gras et que
tout le texte Titre 2 utilise le format Helvetica 12 points avec une mise en forme
Italique. L’instruction If…Then représente l’outil qui vous permettrait de vérifier si le
texte est un style Titre 1 ou Titre 2 et d’appliquer ensuite le format approprié.
En savoir plus sur le concept If This Then That
For Each Loop : ce concept est utile lorsque vous souhaitez passer en revue une
collection, c’est-à-dire, un ensemble « d’éléments », et effectuer une action. Vous
pourriez également appliquer le concept If This Then That pour disposer d’un
contrôle plus précis sur l’action. Par exemple, prenons un tableau. Imaginons que
vous voulez passer en revue chaque ligne à la recherche d’un mot précis et que
dès que vous trouvez ce mot, disons, « jaune », la cellule serait coloriée en jaune (ou
en rouge si le mot recherché est « rouge »). Pour ce faire, vous utiliseriez
conjointement les instructions For Each Loop et If…Then pour mettre en place cette
procédure.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Étape 4 : partager votre macro avec d’autres utilisateurs
Dans le cadre du partage des macros, il est important de comprendre que celles-ci
sont stockées dans le fichier Office, aussi vous devez partager ce fichier avec
d’autres personnes. Si vous avez créé une macro dans Word, vous devez partager
le fichier en tant que modèle Word prenant en charge les macros (.dotm) ou
document Word prenant en charge les macros (.docm). Si vous avez créé une
macro dans Excel, vous devez partager le fichier en tant que classeur Excel prenant
en charge les macros (.xlsm) ou modèle Excel prenant en charge les macros (.xltm).
Si vous avez créé une macro Word, vous devez effectuer quelques étapes
supplémentaires pour partager votre macro :
Créer le modèle Word/Excel/Powerpoint vide
1. Ouvrez un nouveau document Word.
2. Dans le menu Fichier, cliquez sur Enregistrer sous.
3. Nommez votre fichier global_macros.dotm.
4. Dans la liste déroulante Format, sélectionnez Modèle Word prenant en
charge les macros (*.dotm) comme Format.
5. Choisissez l’emplacement où vous voulez stocker le fichier sur votre réseau.
6. Cliquez sur Enregistrer, puis fermez le modèle.
Exporter la macro Word/Excel/Powerpoint à partir de votre document
Avec la macro que vous avez enregistrée à l’étape 1, procédez comme suit pour
exporter la macro :
1. Ouvrez le document ou le modèle contenant la macro que vous voulez
exporter.
2. Dans le menu Outils, pointez sur Macro, puis cliquez sur Macros.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
3. Sélectionnez la macro que vous voulez exporter, puis cliquez sur Modifier.
4. Dans Visual Basic Editor, cliquez sur Fichier > Exporter le fichier.
5. Enregistrez la macro dans le même dossier que le modèle prenant en charge
les macros, global_macros.dotm.
Importer la macro Word dans votre nouveau modèle vide
1. Ouvrez global_macros.dotm, puis cliquez sur Outils > Macro > Visual Basic
Editor.
2. Pour importer la macro, cliquez sur Fichier > Importer le fichier,accédez au
dossier dans lequel vous avez exporté votre macro, sélectionnez le fichier,
puis cliquez sur Ouvrir.
3. Enregistrez le module, fermez Visual Basic Editor, puis quittez Word.
Vous pouvez désormais partager votre macro avec d’autres personnes. Invitez-les à
suivre les étapes ci-dessous pour installer la macro sur leur ordinateur.
Installer le modèle : configurer Word pour utiliser votre macro
1. Placez le fichier global_macro.dotm à cet emplacement :
o Word pour Mac 2011 : Macintosh HD: Utilisateurs : Nom d’utilisateur:
Library: Application Support: Microsoft: Office: User Templates: My
Templates
o Word 2003 sous Windows ou version ultérieure : C:\Documents and
Settings\Nom d’utilisateur\Application Data\Microsoft\Word\STARTUP
Remarque : Nom d’utilisateur est le nom de connexion de l’utilisateur.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
2. Dans Word, cliquez sur Word > Préférences....
1. Dans la section Paramètres personnels, cliquez sur Emplacement des fichiers.
2. Sélectionnez Démarrage dans la liste Emplacement des fichiers, puis cliquez
sur Modifier....
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
1. Vérifiez que Word utilise le dossier dans lequel vous avez placé le fichier
global_macro.dotm comme dossier de démarrage.
2. Cliquez sur Choisir pour fermer la boîte de dialogue Choisir un dossier, puis sur
OK pour fermer la boîte de dialogue Emplacement des fichiers.
La dernière étape consiste à indiquer à Word d’utiliser le fichier
global_macros.dotm lors de son démarrage.
1. Dans Word, cliquez sur Outils > Modèles et compléments....
2. Sélectionnez le fichier global_macros.dotm dans la liste, puis cliquez sur OK.
Conseil : Si vous ne voyez pas votre modèle dans la liste, votre fichier
global_macros.dotm ne figure pas dans le dossier de démarrage de Word.
Revenez à l’étape 1 dans cette section et vérifiez que le dossier Démarrage
est celui dans lequel vous avez copié le fichier global_macros.dotm.
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
Étape 5 : exemples réels
Supprimer toutes les lignes d’un tableau contenant une chaîne de texte spécifique
dans la première colonne
(Par Bill Coan - MVP Word)
Sub DeleteRows()
Dim TargetText As String
Dim oRow As Row
If Selection.Information(wdWithInTable) = False Then Exit Sub
TargetText = InputBox$("Enter target text:", "Delete Rows")
For Each oRow In Selection.Tables(1).Rows
If oRow.Cells(1).Range.Text = TargetText & vbCr & Chr(7) Then oRow.Delete
Next oRow
End Sub
Supprimer toutes les lignes vides dans un tableau
(Par Dave Rado et Ibby - MVP Word)
Public Sub DeleteEmptyRows()
Dim oTable As Table, oRow As Range, oCell As Cell, Counter As Long, _
NumRows As Long, TextInRow As Boolean
' Specify which table you want to work on.
Set oTable = Selection.Tables(1)
' Set a range variable to the first row's range
Set oRow = oTable.Rows(1).Range
NumRows = oTable.Rows.Count
Application.ScreenUpdating = False
For Counter = 1 To NumRows
StatusBar = "Row " & Counter
TextInRow = False
For Each oCell In oRow.Rows(1).Cells
If Len(oCell.Range.Text) > 2 Then
'end of cell marker is actually 2 characters
TextInRow = True
Exit For
End If
Next oCell
12 avenue du Québec – SILIC 523 – 91946 VILLEBON SUR YVETTE
If TextInRow Then
Set oRow = oRow.Next(wdRow)
Else
oRow.Rows(1).Delete
End If
Next Counter
Application.ScreenUpdating = True
End Sub
Supprimer les zones de texte vides dans une présentation
Sub RemoveEmptyTextBoxes()
Dim SlideObj As Slide
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
For Each SlideObj In ActivePresentation.Slides
For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Set ShapeObj = SlideObj.Shapes(ShapeIndex)
If ShapeObj.Type = msoTextBox Then
If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
ShapeObj.Delete
End If
End If
Next ShapeIndex
Next SlideObj
End Sub