Enregistrer la modification de la macro Exécuter Excel - Conseils Excel

Ceci est le 19e conseil Excel hebdomadaire sur.com. La plupart des astuces Excel impliquent une sorte d'astuce macro. Cette semaine, pour les utilisateurs d'Excel qui n'ont jamais écrit de macro, je propose une introduction sur la façon d'enregistrer puis de personnaliser une macro Excel utile.

Exemple de données d'adresse

Supposons que vous ayez 400 lignes de données d'adresse comme celle montrée dans la figure du haut à gauche. Le champ du nom se trouve dans la colonne A, l'adresse municipale dans la colonne B et la ville dans la colonne C.

Votre objectif est de convertir les données en une seule colonne comme celle illustrée dans la deuxième figure.

Ce problème simple sera utilisé pour illustrer comment enregistrer, modifier et exécuter une macro simple.

Pour les utilisateurs d'Excel 95: Après avoir enregistré la macro, Excel placera votre macro sur une feuille appelée Module1 dans votre classeur. Vous pouvez simplement cliquer sur la feuille pour accéder à la macro.

Bien qu'il y ait 400 enregistrements dans cette feuille de calcul, je souhaite enregistrer un tout petit peu de la macro qui ne s'occupe que de la première adresse. La macro supposera que le pointeur de cellule est sur le prénom. Il insérera trois lignes vides. Il copiera la cellule à droite de la cellule d'origine dans la cellule sous la cellule d'origine. Il copiera la cellule de la ville dans la cellule 2 lignes sous la cellule d'origine. Il doit ensuite déplacer le pointeur de cellule vers le bas pour qu'il soit sur le nom suivant.

La clé est de réfléchir à ce processus avant de l'enregistrer. Vous ne voulez pas faire beaucoup d'erreurs lors de l'enregistrement de la macro.

Alors, placez votre pointeur de cellule dans la cellule A1. Allez dans le menu et sélectionnez Outils> Macro> Enregistrer une nouvelle macro. La boîte de dialogue Enregistrer une macro suggère un nom pour Macro1. C'est bien, alors cliquez sur OK.

L'enregistreur de macros Excel a un paramètre par défaut très stupide que vous devez absolument changer pour que cette macro fonctionne. Dans Excel 95, accédez à Outils> Macro> Utiliser des références relatives Dans Excel 97-2003, cliquez sur la deuxième icône de la barre d'outils Arrêter l'enregistrement. L'icône ressemble à une petite feuille de calcul. Une cellule rouge en C3 pointe vers une autre cellule rouge en A3. L'icône s'appelle Référence relative. Lorsque cette icône est «allumée», une couleur entoure l'icône. L'icône se souvient du dernier paramètre de la session Excel en cours, vous devrez donc peut-être cliquer dessus plusieurs fois pour déterminer quelle méthode est activée ou non. Dans Excel 2007, utilisez Affichage - Macros - Utiliser des références relatives.

OK, nous sommes prêts à partir. Suivez ces étapes:

  • Appuyez une fois sur la flèche vers le bas pour accéder à la cellule B1.
  • Maintenez la touche Maj enfoncée et appuyez deux fois sur la flèche vers le bas pour sélectionner les lignes 2, 3 et 4
  • Dans le menu, sélectionnez Insérer, puis sélectionnez Lignes pour insérer trois lignes vides.
  • Appuyez sur la flèche vers le haut, puis sur la flèche droite pour passer à la cellule B2.
  • Appuyez sur Ctrl X pour couper la cellule B2.
  • Appuyez sur la flèche vers le bas, la flèche gauche, puis Ctrl V pour coller dans la cellule A2.
  • Appuyez sur flèche vers le haut, flèche droite, flèche droite, Ctrl X, flèche gauche, flèche gauche, flèche bas, flèche bas, Ctrl V pour déplacer C1 à A3.
  • Appuyez deux fois sur la flèche vers le bas pour que le pointeur de cellule se trouve maintenant sur le nom suivant de la ligne A5.
  • Cliquez sur l'icône "Arrêter l'enregistrement" dans la barre d'outils pour arrêter l'enregistrement de la macro.

Eh bien, vous avez enregistré votre première macro. Nous allons jeter un coup d'oeil. Allez dans Outils> Macro> Macros. Dans la liste, mettez en surbrillance Macro1 et appuyez sur le bouton Modifier. Vous devriez voir quelque chose qui ressemble à ceci.

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub

Hé, si vous n'êtes pas un programmeur, cela semble probablement assez intimidant. Ne le laissez pas être. S'il y a quelque chose que vous ne comprenez pas, il y a une excellente aide. Cliquez sur votre curseur quelque part dans le mot-clé Offset et appuyez sur F1. Si vous avez installé le fichier d'aide VBA, vous verrez la rubrique d'aide pour le mot clé Offset. L'aide vous indique la syntaxe de l'instruction. Il dit que c'est Offset (RowOffset, ColumnOffset). Toujours pas très clair? Recherchez le mot "exemple" souligné en vert en haut de l'aide. Les exemples VBA d'Excel vous permettront d'apprendre ce qui se passe. Dans l'exemple de Décalage, il est indiqué d'activer la cellule deux lignes ci-dessous et trois lignes à droite de la cellule actuelle, vous utiliseriez:

ActiveCell.Offset(3, 2).Activate

OK, c'est donc un indice. La fonction de décalage est un moyen de se déplacer dans la feuille de calcul Excel. Compte tenu de ces informations, vous pouvez en quelque sorte voir ce que fait la macro. Le premier décalage (1, 0) est l'endroit où nous avons déplacé le pointeur de la cellule vers A2. Le décalage suivant est l'endroit où nous avons progressé d'une ligne (-1 lignes) et d'une colonne. Vous ne comprenez peut-être rien d'autre dans la macro, mais cela reste utile.

Revenez à la feuille de calcul Excel. Placez votre pointeur de cellule dans la cellule A5. Choisissez Outils> Macro> Macros> Macro1> Exécuter. La macro s'exécute et votre deuxième adresse est formatée.

Vous dites peut-être que la sélection de toute cette longue et grande chaîne de commandes est plus difficile qu'un simple formatage manuel. OK, puis faites Outils> Macro> Macros> Options. Dans la zone de raccourci, disons que Ctrl + w est la touche de raccourci de cette macro. Cliquez sur OK, puis fermez la boîte de dialogue Macro avec Annuler. Maintenant, lorsque vous appuyez sur Ctrl w, la macro s'exécute. Vous pouvez formater une adresse en une seule touche.

Êtes-vous prêt pour le grand moment? Combien d'adresses vous reste-t-il? J'ai appuyé sur Ctrl wa plusieurs fois, il me reste donc 395. Revenez à votre macro. Nous allons mettre tout le code de la macro en boucle. Insérez une nouvelle ligne indiquant «À faire jusqu'à activecell.value =» »» avant la première ligne de code de macro. Insérez une ligne qui dit "Boucle" avant la ligne End Sub. La boucle Do exécutera tout entre la ligne Do et la ligne Loop jusqu'à ce qu'elle aboutisse sur une ligne vide. La macro ressemble maintenant à ceci:

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub

Revenez à votre feuille Excel. Placez le pointeur de cellule sur le nom suivant. Appuyez sur Ctrl w et la macro formatera tous vos enregistrements en quelques secondes.

Les auteurs de livres Excel disent que vous ne pouvez rien faire d'utile en enregistrant une macro. Pas vrai! Pour la personne qui allait devoir couper et coller 800 fois, cette macro est très utile. L'enregistrement et la personnalisation ont pris quelques minutes. Oui, les programmeurs professionnels remarqueront que le code est horriblement inefficace. Excel met tout un tas de choses là-dedans qu'il n'a pas besoin de mettre là-dedans. Oui, si vous saviez ce que vous faites, vous pouvez accomplir la même tâche avec la moitié des lignes qui s'exécuteront en 1,2 seconde au lieu de 3 secondes. ET ALORS? 3 secondes est beaucoup plus rapide que les 30 minutes que la tâche aurait durées.

Quelques conseils supplémentaires pour les enregistreurs de macro débutants:

  • L'apostrophe est utilisée pour indiquer un commentaire. Tout ce qui suit l'apostrophe est ignoré par VBA
  • Il s'agit de programmation orientée objet. La syntaxe de base est object.action. Si un compilateur orienté objet jouait au football, il dirait "ball.kick" pour botter le ballon. Donc "Selection.Cut" dit de faire un "éditer> couper" sur la sélection courante.
  • Dans l'exemple ci-dessus, les modificateurs de plage sont relatifs à la cellule active. Si la cellule active est en B2 et que vous dites "ActiveCell.Range (" A1: C3 "). Select", vous sélectionnez la zone de 3 lignes par 3 colonnes à partir de la cellule B2. En d'autres termes, vous sélectionnez B2: D4. Dire "ActiveCell.Range (" A1 ")" dit de sélectionner la plage de cellules 1 x 1 en commençant par la cellule active. C'est incroyablement redondant. Cela équivaut à dire "ActiveCell.Select".
  • Enregistrez votre classeur avant d'exécuter une macro pour la première fois. De cette façon, s'il a une erreur et fait quelque chose d'inattendu, vous pouvez fermer sans enregistrer et revenir à la version enregistrée.

Espérons que cet exemple simple vous donnera aux enregistreurs de macros novices le courage d'enregistrer une macro simple la prochaine fois que vous aurez une tâche récurrente à effectuer dans Excel.

Articles intéressants...