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

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.

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 :

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".

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

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