Votre première macro Excel

Une macro, c'est du code Visual Basic qui va se contenter de faire une ou plusieurs instructions de manière automatique. Pour notre premier exemple, nous allons nous contenter d'écrire une macro qui s'appelle BeauTemps, et qui affiche dans une cellule "Il y a du soleil." Attention : Il est indispensable que vous suiviez chacune des instructions qui suivent scrupuleusement à la virgule près. C'est parti...

Etape 1 : Enregistrement de la macro BeauTemps

  1. Ouvrez Excel. Vous êtes dans la cellule A1 d'un nouveau classeur. C'est très bien
  2. Faites Outils/Macros/NouvelleMacro
  3. Nom de la macro : BeauTemps (PAS D'ESPACE entre Beau et Temps)
  4. Enregistrer la macro dans : Ce classeur
  5. Cliquez sur OK
    ATTENTION : Maintenant, vous êtes en train d'enregistrer votre macro. C'est comme si vous étiez dans un studio d'enregistrement, LA MOINDRE CHOSE que vous faites, ne fut-ce que de cliquer dans une autre cellule que A1 sera enregistré. Donc : Dès maintenant, vous faites EXACTEMENT ce qui suit.
  6. Ecrivez Il y a du soleil
  7. Cliquez sur le petit V, à gauche de la barre de formule, pour valider votre texte (à la place d'appuyer sur ENTER)
  8. Faites Outils/Macros/Arrêter l'enregistrement

Voilà. Vous pouvez respirer, la macro est terminée ! Nous allons maintenant passer à l'exécution de la macro :

Etape 2: Exécution de la macro BeauTemps

  1. Cliquez dans une autre cellule que A1 (B2 par exemple)
  2. Faites Outils/Macros/Macros
  3. Vous devriez avoir sous les yeux, dans la liste des macros, une seule macro : BeauTemps. Cliquez dessus
  4. Cliquez sur Exécuter

Et voilà : Si tout s'est bien passé, vous devriez voir apparaître en B2 Il y a du soleil

Si vous avez eu un problème quelconque, je vous conseille de quitter Excel, ne pas sauvegarder votre document, revenir dans Excel, et recommencer intégralement le tout depuis le point 1 de l'étape 1.

Si tout s'est bien passé, passons à l'étape 3, à quoi cette macro ressemble-t-elle ?

Etape 3 : Visualisation de la macro

  1. Faites Outils/Macros/Visual Basic Editor
    Vous arrivez dans l'environnement Visual Basic
  2. Dans la partie de gauche, vers le haut, vous avez une liste de choses, qui commence par VBA Project (Classeur1). Un peu plus bas, c'est écrit Modules, avec un petit + à côté. Cliquez sur ce petit +
  3. Il y a alors Module 1 qui apparait. Cliquez 2 fois sur ce Module 1
  4. Ca ouvre en grand une fenêtre dans toute la partie de droite, et vous devriez voir le texte suivant :
    Sub BeauTemps()
    '
    ' BeauTemps Macro
    ' Macro enregistrée le (La date du jour) par (Quelqu'un)
    '

    '
    ActiveCell.FormulaR1C1 = "Il y a du soleil"
    End Sub

Voilà à quoi ressemble votre macro BeauTemps : Toutes les macros commencent par Sub NomDeLaMacro, et se terminent par End Sub. C'est une règle. Les lignes qui commencent par une apostrophe (') en vert sont des commentaires, ce sont simplement des lignes qui sont ignorées par Visual Basic. Et pour écrire du texte dans une cellule, vous le voyez vous même : C'est ActiveCell.FormulaR1C1 = "Un texte quelconque"

Revenez maintenant dans Excel : Fichier/Fermer et retourner à Microsoft Excel

Maintenant que vous êtes arrivés ici, passons à l'étape suivante qui consite à modifier une macro existante

Etape 4 : Modification d'une macro existante

Admettons que notre macro BeauTemps ne doit pas afficher Il y a du soleil, mais plutôt Le ciel est bleu. C'est très simple :

  1. Faites Outils/Macros/Macros, Cliquez sur BeauTemps, et cliquez sur Modifier
    (C'est une autre façon de faire la même chose que Outils/Macros/Visual Basic Editor, comme à l'étape d'avant)
  2. Remplacez simplement la lgne
    ActiveCell.FormulaR1C1 = "Il y a du soleil"
    Par
    ActiveCell.FormulaR1C1 = "Le ciel est bleu"
  3. Fichier/Fermer et retourner à Microsoft Excel
  4. Testons : Cliquez sur une cellule vide (C3 par exemple)
  5. Faites Outils/Macros/Macros
  6. Cliquez deux fois sur BeauTemps
    (Donne le même résultat que cliquer sur BeauTemps et Exécuter)

Si tout s'est bien passé, vous devriez voir Le ciel est bleu dans la cellule C3.

Continuons notre petit bonhomme de chemin, et créons une macro de toutes pièces nous même

Etape 5 : Création d'une macro sans l'aide de l'enregistreur de macros

Imaginons une macro qui s'appelle Ski, qui qui affiche J'aime les sports d'hiver

  1. Faites Outils/Macros/Visual Basic Editor.
    Vous devriez voir sur votre droite la macro BeauTemps. Si ce n'est pas le cas, cliquez simplement deux fois dans la partie de gauche sur Module1
  2. En dessous de la macro BeauTemps (Juste en dessous de End Sub), écrivez ceci :
    Sub Ski
  3. Appuyez sur ENTER. Normalement, visual Basic vous a écrit ceci :
    Sub Ski()

    End Sub

  4. Maintenant, dans cette procédure, ajoutez la ligne de commande suivante pour écrire J'aime les sports d'hiver : activeCell.FormulaR1C1 = "J'aime les sports d'hiver"

  5. Voici le résultat que vous devez obtenir :
    Sub BeauTemps()
    '
    ' BeauTemps Macro
    ' Macro enregistrée le 16.12.2000 par Michel
    '

    '
    ActiveCell.FormulaR1C1 = "Le ciel est bleu"
    End Sub

    Sub Ski()
    ActiveCell.FormulaR1C1 = "J'aime les sports d'hiver"
    End Sub

  6. Quittez visual basic (Fichier/Quitter et retourner à Excel)

Nous allons tester cette macro : Cliquez dans une cellule quelconque encore vide (D4 par exemple), et faites Outils/Macros, et cliquez 2 fois sur Ski. Normalement, vous devriez voir apparaître dans la cellule D4 J'aime les sports d'hiver

Vous voilà maintenant initié au grand monde de la parogrammation visual basic pour Excel.

Etape 6 : Exercice pratique

Nous allons compléter le tout par un petit exercice pratique : Nous allons créer une macro toute simple qui efface toute la feuille de calcul, et qui se positionne sur la cellule A1, comme on effacerait un tableau noir. Avant de commencer cette macro, il faut identifier les étapes.

D'abord, "Salissez" un peu votre feuille de calcul : Ecrivez du texte dans certaines cellules, coloriez en d'autres en différentes couleurs... Attention donc, je vous rappelle que pour effacer la coloration d'une cellule, la touche DELETE ne fonctionne pas, il faut faire Edition/Effacer/Tout.

Bien. Maintenant que votre feuille est "Salie", faisons une répétition générale de ce que doit faire la macro :

  1. Faites CTRL-A (Pour sélectionner toute la feuille)
  2. Faites Edition/Effacer/Tout (Pour effacer toute trace de texte et de formats dans toute la feuille)
  3. Faites CTRL HOME (Pour revenir automatiquement sur A1)

Normalement, vous devriez être dans la cellule A1 d'une feuille immaculée... Resalissez cette pauvre feuille (Ecrivez du texte et coloriez quelques cellules). Après cela, nous allons faire la même chose que tout à l'heure, mais en enregistrant la macro qui va faire toutes ces étapes. C'est parti :

  1. Faites Outils/Macros/Nouveléle Macro
  2. Nom de la macro : EffacerTout. Enregistrer dans : Ce classeur. Cliquez sur OK
  3. Faites CTRL-A
  4. Faites Edition/Effacer/Tout
  5. Faites CTRL HOME
  6. Faites Outils/Macros/Arrêter l'enregistrement

Voilà. La macro est fin prête. Resalissez encore une fois la feuille (vous commencez à avoir l'habitude), et faites Outils/Macros, et cliquez 2 fois sur EffacerTout... Si tout se passe comme prévu, la feuille doit s'effacer automatiquement, et vous devriez vous retrouver sur A1...

Je pense que vous savez comment faire pour aller visualiser cette macro qui doit ressembler exactement à ceci :

Sub EffacerTout()
'
' EffacerTout Macro
' Macro enregistrée le 16.12.2000 par Michel
'

'
Cells.Select
Selection.Clear
Range("A1").Select
End Sub

Aménageons-là : Supprimez les commentaires (qui ne nous servent pas à grand chose... L'enregistreur de macros fait parfois de l'excès de zèle):

Sub EffacerTout()
Cells.Select
Selection.Clear
Range("A1").Select
End Sub

Et indentez le code. Indenter signifie simplement mettre tout ce qui est entre Sub EffacerTout et End Sub en retrait, pour faciliter la lisibilité. Pour l'instant, vous pouvez ne pas comprendre l'utilité, mais par la suite, vous verrez que c'est très pratique :

Sub EffacerTout()
  Cells.Select
  Selection.Clear
  Range("A1").Select
End Sub

Et voilà... Sans être des pros de VBA, vous pouvez déjà deviner pas mal de choses. Allez, je ne vous donne pas la solution, à votre avis, quel signifie Cells.Select ? et Selection.Clear ? Et Range("A1").Select ? C'est facile, n'est ce pas !...