Enregistreur
Macro enregistrée en VBA
Utilisation de l’enregistreur de macros et présentation de Visual Basic Editor
Exemple de macro "définir_titre" à réaliser avec l'enregistreur de macro
- Sélectionner la cellule F10
- Saisir un titre
- Valider par Entrée (valider sans descendre : Ctrl + entrée)
- Revenir sur le titre (F10)
- Le mettre en gras (avec le bouton G)
- Définir un double soulignement. (Par le menu Format > cellule)
- Sélectionner la cellule F10
- Saisir un titre
- Valider par Entrée (valider sans descendre : Ctrl + entrée)
- Revenir sur le titre (F10)
- Le mettre en gras (avec le bouton G)
- Définir un double soulignement. (Par le menu Format > cellule)
Pour réaliser cet exemple, on lance l'enregistreur de macro par le menu Outils / Macros / Nouvelle Macro.
Attention, sous Excel 2007, ces fonctionnalités se retrouvent dans l'onglet "Développeur" qui n'est pas affiché par défaut. Pour afficher cet onglet, cliquez sur le bouton Office, puis sur le bouton "options Excel". Dans Standard, activez la case à cocher "Afficher l'onglet Développeur dans le ruban".
- Donner un nom (sans espace) ex : définir_titre
- Donner un raccourci optionnel : idéal utiliser Shift + la lettre
- Enregistrer la macro dans ce classeur (voir ci-dessous).
- Démarrage de l'enregistrement, faire l'exemple et arrêter la macro avec la barre d'outils (celle avec 2 boutons : Arrêter et Référence relative).
Tester la macro (Alt + F8)
On constate que cette macro s'exécute toujours dans F10 !!! Refaire l'exemple sans clic et sans valider avec entrée pour qu'elle s'exécute partout. Nommé cet exemple "définir_titre2".
Le classeur de macros personnelles
On peut enregistrer nos macro dans le classeur de macros personnelles (PERSONAL.XLSB). Idéal si l'on veut que notre macro soit accessible par tous les classeurs Excel de notre ordinateur. Il ce trouve dans le dossier XLSTART (C:\Users\votrenom\AppData\Roaming\Microsoft\Excel\XLSTART). Ce classeur est créé automatiquement avec la première macro, il est toujours ouvert avec Excel (et toujours masqué: menu fenêtre / Afficher sous Excel 2003 et onglet Affichage, groupe fenêtre, option Afficher sous Excel 2007). Si vous l'affichez, attention de ne pas le fermer mais de le masquer à nouveau.
On peut enregistrer nos macro dans le classeur de macros personnelles (PERSONAL.XLSB). Idéal si l'on veut que notre macro soit accessible par tous les classeurs Excel de notre ordinateur. Il ce trouve dans le dossier XLSTART (C:\Users\votrenom\AppData\Roaming\Microsoft\Excel\XLSTART). Ce classeur est créé automatiquement avec la première macro, il est toujours ouvert avec Excel (et toujours masqué: menu fenêtre / Afficher sous Excel 2003 et onglet Affichage, groupe fenêtre, option Afficher sous Excel 2007). Si vous l'affichez, attention de ne pas le fermer mais de le masquer à nouveau.
Exportation
Le dossier de module standard peut être exporté par le menu Fichier/Exporter un fichier (Ctrl + E - cela crée un fichier Module1.bas) comme les formulaires (dossier Feuilles) avec l'extension .frm ou les dossiers de modules de classes avec l'extension .cls.
Le dossier de module standard peut être exporté par le menu Fichier/Exporter un fichier (Ctrl + E - cela crée un fichier Module1.bas) comme les formulaires (dossier Feuilles) avec l'extension .frm ou les dossiers de modules de classes avec l'extension .cls.
Dans l'Explorateur de projet, faites un double clic sur le dossier Modules. Dans la fenêtre Code (l'éditeur de code: Alt + F11), on voit apparaître la macro (ou procédure) définir_titre2. Toutes les macros enregistrées dans ce projet sont visibles à partir du menu déroulant en haut à droite de la page de l'éditeur de code VBA.
Sub définir_titre2()
'
' définir_titre2 Macro
' Macro enregistrée le 2/10/1932 par Easy-Micro
'
End Sub
'
' définir_titre2 Macro
' Macro enregistrée le 2/10/1932 par Easy-Micro
'
Selection.FormulaR1C1 = "montitre" Selection.Font.Bold = True Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThic .ColorIndex = xlAutomatic End With Selection.Borders(xlEdgeRight).LineStyle = xlNone
End Sub
Explication du code de la macro
• Selection.Font.Bold = True
Selection : pour appliquer la macro sur une plage de cellule. Font = police et Bold = gras. Selection permet de parler de la sélection active (pas de liste car trop générique donc pas pratique à utiliser). Idéal : remplacer le mot clé Selection par l'autre mot clé ActiveCell.
• Range("F10").Select
Soit un clic. Range = plage de cellule (une ou plusieurs cellule). ActivCell : la cellule active (pour appliquer la macro sur une seule cellule).
• Selection.FormulaR1C1
Voir la notation L1C1 (Ligne1Colonne1 ? anglais Row1Column1). Idéal : Selection.value = "Un titre". Exemple de formule : ActiveCell.Formula = "=A1+A2"
• Toutes les bordures (Edge veut dire bords en Français) comme Borders(xlDiagonalDown), Borders(xlDiagonalUp), Borders(xlEdgeLeft), Borders(xlEdgeRight), et Borders(xlEdgeTop) sont à xlNone (soit à Non) donc tous ce code est inutile!!! On peut donc supprimer ce code. Il n'y a que la bordure bottom qui est prise en compte - Borders(xlEdgeBottom) ? dans l'instruction With End With
• Le bloc With ... End With
Permet de mettre en facteur "Selection.Borders" afin d'éviter la répétition d'une instruction.
Exemple:
With Selection.Font
.Underline = xlUnderlineStyleDouble
.ColorIndex = 5 ' soit bleu
End With