Accueil | Ce site | CV | Excel | Livre dor | Macros XL4 | Modèles | VBA
La façon la plus simple de découvrir VBA est lenregistrement automatique dune macro, accessible grâce à licône
de la barre doutils VBA (figure 1).
![]()
Fig. 1 - La barre doutils VBA
Un clic sur cette icône provoque lenregistrement automatique dune macro : tout ce qui est réalisé, création dun classeur, entrée de formules dans les cellules, formatage, est traduit en code VBA. Cela sert à réaliser des macros très simples, ou à examiner le code généré, pour comprendre comment fonctionne VBA et se familiariser avec le vocabulaire et la syntaxe.
Lenregistrement automatique peut également servir de pense-bête pour retrouver les noms, les méthodes et les propriétés des objets dExcel : quelqu'un ne se rappelant pas les propriétés permettant de formater une cellule, peut déclencher lenregistrement automatique et effectuer ce formatage manuellement.
Pour générer lexemple de code ci-après, les opérations suivantes ont été réalisées :
Voici le code généré (avec Excel 98) :
Sub Macro1() ' ' Macro1 Macro ' Macro enregistrée le 28/01/2003 par Michel Gaboly ' Range("D11:D13").Select With Selection.Font .Name = "Geneva" .FontStyle = "Gras" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False End With End Sub
Le code paraît étonnamment long pour le peu dopérations réalisées. En négligeant les commentaires affichés en vert, il se décompose en 3 blocs.
Sub Macro1() Range("D11:D13").Select With Selection.Font ... End With With Selection ... End With End Sub
La première ligne correspond à la sélection des cellules concernées.
Le premier bloc, With Selection.Font ... End With définit les propriétés relatives à la police (Font en anglais). Ce bloc affecte une valeur non seulement aux éléments mis à jour manuellement, mais aussi aux autres éléments accessibles dans le même onglet (figure 2).

Fig. 2 - Longlet Police du dialogue Format de cellule.
Outre les 4 propriétés modifiées (police, taille, style et couleur), le code généré a également affecté une valeur à la propriété Underline (soulignement) et aux 5 attributs proposés dans le dialogue (Barré, Exposant, Indice, Relief et Ombré).
Le second bloc, With Selection ... End With définit les propriétés relatives à lalignement. Lors de lenregistrement de la macro, c'est le bouton Centré dune barre doutils qui a été utilisé, mais cette façon de procéder est considérée par lenregistreur comme un raccourci, et la macro comporte les mêmes lignes que si on était passé par longlet Alignement (figure 3).

Fig. 3 - Longlet Alignement du dialogue Format de cellule.
Il est en général possible de simplifier le code obtenu :
La première méthode consiste à ne conserver que les lignes correspondant à lune des propriétés que lon souhaitait explicitement modifier. Les autres propriétés resteront invariantes.
Il existe un second aspect, beaucoup plus important, car il est lié à la compréhension de VBA : il est superflu de sélectionner des cellules pour modifier leurs propriétés.
Compte tenu de ces éléments, voici une version simplifiée de la macro obtenue par enregistrement.
Sub Macro1Bis() With Range("D11:D13").Font .Name = "Geneva" .FontStyle = "Gras" .Size = 12 .ColorIndex = 3 End With Range("D11:D13").HorizontalAlignment = xlCenter End Sub
Cette version de la macro réalise exactement les opérations effectuées pour générer la macro précédente, à lexception de la sélection des cellules D11 à D13. Nous avons vu en effet que cette sélection, inévitable pour modifier manuellement le formatage de ces cellules, est superflue en VBA.
Il faut considérer l'enregistrement automatique comme un outil dapprentissage ou, nous lavons déjà évoqué, comme un pense-bête.
Par ailleurs, le code ainsi obtenu est en général inutilement long, car il modifie des propriétés auxquelles on ne souhaitait pas toucher. Limportance du code généré peut désorienter, mais il ne faut surtout pas se laisser décourager pour si peu !