Cours VBA : première macro

Il est possible d'automatiser certaines tâches en toute simplicité grâce à l'enregistreur de macros.

Pour prendre un exemple simple, nous allons automatiser les opérations suivantes :

  • Effacer le contenu des colonnes A et C
  • Déplacer le contenu de la colonne B dans la colonne A
  • Déplacer le contenu de la colonne D dans la colonne C

macro1 premiere macro

Pour ce faire, cliquez sur Enregistrer une macro puis sur Ok, exécutez les opérations décrites ci-dessus sans interruption (car toutes les manipulations sont enregistrées) et pour terminer cliquez sur Arrêter l'enregistrement.

Pour les versions d'Excel inférieures à 2007 : Outils > Macros > Nouvelle macro.

macro2 premiere macro

Excel a enregistré vos manipulations et les a traduites en code VBA.

Pour voir votre macro, ouvrez l'éditeur (Alt + F11) et cliquez sur Module1 :

macro3 premiere macro

Ce code correspond aux manipulations enregistrées.

Nous allons nous arrêter quelques instants sur le code généré :

Sub Macro1()
'
' Macro1 Macro
'

'
    Columns("A:A").Select
    Selection.ClearContents
    Columns("C:C").Select
    Selection.ClearContents
    Columns("B:B").Select
    Selection.Cut Destination:=Columns("A:A")
    Columns("D:D").Select
    Selection.Cut Destination:=Columns("C:C")
    Columns("C:C").Select
End Sub

Sub et End Sub délimitent le début et la fin de la macro, Macro1 correspond au nom de cette macro :

Sub Macro1()

End Sub

Nous allons maintenant modifier le nom de cette macro et lui attribuer un nom qui soit un peu plus parlant. Pour cela, remplacez simplement Macro1 par manipulationsDesColonnes (le nom ne doit pas contenir d'espaces) :

Sub manipulationsDesColonnes()

Le texte en vert (texte précédé d'une apostrophe) est un commentaire, il n'est pas pris en compte à l'exécution du code :

'
' Macro1 Macro
'

'

Les commentaires sont très utiles pour s'y retrouver lorsque l'on dispose de beaucoup de code ou pour ne pas exécuter certaines lignes de code sans pour autant les supprimer.

Sub manipulationsDesColonnes()

    'Mon premier commentaire !

    Columns("A:A").Select
    Selection.ClearContents
    Columns("C:C").Select
    Selection.ClearContents
    Columns("B:B").Select
    Selection.Cut Destination:=Columns("A:A")
    Columns("D:D").Select
    Selection.Cut Destination:=Columns("C:C")
    Columns("C:C").Select
End Sub

Nous souhaitons maintenant que cette macro s'exécute en cliquant sur un bouton.

Insérez un bouton en cliquant sur Insérer Bouton (Contrôles de formulaires) :

Pour les versions d'Excel inférieures à 2007 : "Bouton" de la barre "Formulaires".

macro4 premiere macro

Tracez votre bouton et sélectionnez ensuite simplement votre macro :

macro5 premiere macro

Lorsque vous cliquerez sur le bouton, la macro sera exécutée :

macro6 premiere macro