Vous pouvez télécharger ici la version de Cours.XLS de la leçon précédente
L'enregistreur de macros est bien sympathique, mais nous allons constater que parfois, il se comporte de manière apparemment étrange : il ne semble pas se déplacer parmi les cellules comme on s'y attend. Que se passe-t-il ? Ce sont les références absolues et relatives qui sont dans le coup !
Une première macro "ListeChiffre"
Je présume que vous êtes bien dans votre fichier habituel Excel.
![]() |
Cliquez dans une cellule : disons B5. Lancez l'enregistreur de macros (Outils/Macros/Nouvelle Macro : ListeChiffre, dans Ce Classeur). Ecrivez Un, tapez sur la touche <ENTER>, tapez "Deux", <ENTER>, Trois, <ENTER>, et arrêtez la macro. |
![]() |
Maintenant, placez vous ailleurs, disons en D2, et lancez cette macro ListeChiffre (Alt-F8). Regardez comme c'est étrange, on dirait qu'il n'a écrit que Un, et pas les deux autres chiffres... |
On peut effectivement se gratter la tête un sacré moment pour comprendre pourquoi il n'a pas tout pris en compte. Nous allons maintenant mieux comprendre. Commencez par effacer toute la feuille (CTRL-A, et Menu Edition/Effacer/Tout). N'appuyez pas simplement sur la touche DELETE, parce que le fond jaune de la cellule B2 ne disparaitrait pas.
![]() |
Maintenant, cliquez dans une autre cellule, disons C1. Lancez à nouveau la macro ListeChiffre. Regardez ce qui s'est passé: Il écrit bien Un là où vous étiez, mais il a ensuite sauté sur B6 pour écrire Deux, et en dessous : Trois. Il s'est passé que lorsque nous avons enregistré notre macro à la base, nous étions dans la cellule ... B5. Et lorsque nous avons fini d'écrire Un, nous avons appuyé sur <ENTER>, mais L'enregistreur n'a pas compris "Descend d'une cellule", mais "Va en B6". Eh oui ! Et ensuite écris Deux, et va en B7, et écris Trois. |
![]() |
Comme vous le constatez, L'enregistreur de macro se comporte vraiment comme un "militaire borné". Il n'a aucune intuition ! Pour donner une image parlante, imaginez que vous êtes un cuisinier, et que vous apprenez à un nouveau commis à éplucher des pommes de terre. Vous vous placez à côté de lui, et vous tendez le bras pour prendre une patate dans le saladier devant vous. Le commis tend aussi le bras pour prendre une patate dans son propre saladier. Vous prenez la patate et l'épluchez doucement. Il vous regarde, prend la patate et l'épluche doucement. Maintenant, si vous prenez une 2ème patate, mais que dans le saladier du commis, il y a par exemple une banane, il va prendre la banane sans sourciller et tenter de l'éplucher comme une patate, bêtement ! Si vous toussez, le commis va tousser aussi (à chaque patate), et lorsque le saladier est vide, ce commis idiot va simplement faire semblant de prendre une patate et s'éplucher les doigts ! |
Gardez à l'esprit que l'enregistreur de macro est aussi bête que ce commis de cuisine ! Vraiment !!!
Utilisation de références relatives
Maintenant, comment peut-on lui dire qu'il ne doit pas se déplacer de manière "absolue", mais "relativement par rapport ou il était". C'est à dire que quand on appuie sur <ENTER>, ou <FLECHE BAS>, il doit se déplacer d'une cellule vers le bas ?
![]() |
Placez-vous dans une cellule, disons A3. Enregistrez une nouvelle macro : ListeChiffre2. Maintenant, regardez la petite barre d'outils "Arrêter l'enregistrement". Il y a une petite icône au dessus du carré bleu. Cliquez dessus |
![]() |
Ca ne fait rien, ça change juste sa couleur pour donner l'impression que ce bouton est "enfoncé" |
Mais le fait d'avoir "allumé" ce bouton, l'enregistreur va mieux comprendre les déplacements.
![]() |
Ecrivez Un, <ENTER>, Deux, <ENTER>, Trois, <ENTER>, et arrêtez la macro. |
![]() |
Maintenant, placez-vous sur une autre cellule, disons C4, et lancez la macro. Cette fois, la macro se comporte comme on s'y attendait. |
Que nous soyons bien d'accord . ce n'est pas forcément MIEUX d'avoir l'icône enfoncée, tout dépend ce que vous désirez faire. Il s'agit souvent d'écrire du texte à des emplacemens fixes, auquel cas il faut évidemment ne pas allumer ce bouton..
Attention : Lors de l'enregistrement de votre prochaine macro, Excel se souviendra si cette icône était allumée ou éteinte, et la laissera dans le même état. Ca peut parfois jouer des tours.
Attention encore : Il arrive fréquemment qu'on commence à enregistrer une macro, et qu'on oublie de l'arrêter, et l'on continue à travailler comme si de rien n'était. Au bout d'un moment, comme on peut le deviner, Excel va simplement se planter, et vous serez bon pour redémarrer Excel... Le conseil du jour, c'est : SAUVEGARDEZ REGULIEREMENT votre travail !
Vous pouvez télécharger ici Cours.XLS tel qu'il devrait être à la fin de cette leçon
L'enregistreur de macro est certes simple et sympathique, mais
il est quelque peu borné. Par défaut, il ne comprend pas que la
touche <ENTER> (Ou les touches fléchées du clavier) descend
d'une cellule (ou se déplacent d'une cellule vers la droite, la gauche
ou même le haut le cas échéant), mais il mémorise
bêtement les références absolues des cellules dans lesquelles
il se trouve.
L'icône "Référence relative" est une icône
qui s'enfonce simplement et qui informe l'enregistreur qu'il faut, jusqu'à
ce qu'on reclque sur ce même bouton, enregistrer les déplacements
RELATIVEMENT à la place ou on se trouve.
Ce schéma suppose que vous étiez dans la cellule A1 au
moment de l'exercice : |
Dans un nouveau classeur, que vous nommerez "Exercice
leçon 3.XLS", créer une macro "Deplacement" - Ecrire Abricot dans la cellule ou vous vous trouvez - Se déplacer d'une cellule vers le bas et une cellule vers la droite - Ecrire Artichaut - Se déplacer de DEUX cellules vers le bas et UNE cellule vers la droite - Ecrire Mandarine - Se placer sur la cellule A8 - Ecrire Manivelle Téléchargez la solution de l'exercice ici |