COMMENT DUPLIQUER 500 FOIS (OU PLUS !) UNE FEUILLE DE CALCUL EXCEL EN 1 CLIC
Dans ce tutoriel, je vais vous montrer comment automatiser l’insertion de nouvelles feuilles de calculs dans un classeur de manière automatique. Nous verrons ainsi comment insérer une toute nouvelle feuille de calculs, complètement vide, mais également comment dupliquer une feuille active, un grand nombre de fois ! Et l’histoire de simplifier automatiquement le process de création de la macro, nous utiliserons l’outil de création de macro automatique intégré à Excel !
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Créer une nouvelle feuille, sans saisir de ligne de code
Pour commencer, nous allons créer deux macros de manière automatique, en utilisant directement l’enregistreur de macro d’Excel.
Comme nous l’avons déjà étudié au tout début de la formation sur l’apprentissage de VBA disponible gratuitement sur excelformation.fr, cet outil permet d’enregistrer des séquences d’actions pour les convertir en lignes de code VBA que nous pourrons ensuite reproduire à volonté en relançant ces macros.
Pour utiliser l’enregistreur de macro, cliquez simplement sur le bouton correspondant dans la barre d’état qui se trouve tout en bas de l’interface d’Excel.
Puis dans la fenêtre qui s’affiche, nous pouvons attribuer un nom à la macro (ici tout simplement insererNouvelleFeuilleVide), et éventuelle insérer une description
Dès lors que nous aurons validé en appuyant sur le bouton OK, l’enregistrement va démarrer.
Nous pouvons vérifier la bonne mise en place de cet enregistrement d’un coup d’œil, car l’icône d’enregistrement dans la barre d’état a maintenant la forme d’un carré
A partir de maintenant, toutes les actions que nous allons réaliser au sein d’Excel vont être traduit en ligne de commande VBA.
Cette première macro va être très simple, nous allons uniquement insérer une nouvelle feuille de calcul vide, en cliquant simplement sur le symbole plus (+), situé à droite des onglets de feuilles de calculs
Une fois la nouvelle feuille de calcul inséré, nous pouvons stopper l’enregistrement en cliquant sur l’icône de fin d’enregistrement (le carré dans la barre d’état Excel)
Ensuite, nous allons réitérer l’opération, mais cette fois-ci pour dupliquer la feuille de calcul active :
- Nous démarrons un nouvel enregistrement sous le nom de dupliquerLaFeuilleActive
- Ensuite, nous dupliquons la feuille active en effectuant un clic droit sur l’onglet de celle-ci et nous choisissons l’option Déplacer ou copier
- Dans la fenêtre qui s’affiche, nous choisissons d’insérer cette nouvelle feuille en tout fin de classeur (choisir « (en dernier) » dans le menu « Avant la feuille »), et nous cochons l’option « Créer une copie »
- Enfin, nous pouvons valider la création de la copie en appuyant sur le bouton OK
Et pour finir, nous pouvons arrêter l’enregistreur de macro.
2. Analyse et amélioration des macros VBA
Ensuite, pour visionner les macros que nous venons d’insérer, nous nous rendons dans l’outil de développement VBE (pour Visual Basic Editor), en appuyant sur les touches [Alt]+[F11].
Nous pouvons alors nous rendre compte que les deux macros ont effectivement été insérées, dans un module dédié qui porte le nom de Module1 :
2.1. La macro insererNouvelleFeuilleVide
La macro insererNouvelleFeuilleVide est très simple.
Elle est en effet composée d’une ligne, qui consiste - comme nous l’avons demandé - de créer une nouvelle feuille juste après la feuille active.
Maintenant, nous souhaitons être en mesure d’insérer non pas une seule feuille, mais que l’utilisateur à l’origine du lancement de la macro puisse préciser directement le nombre de feuilles qu’il souhaite insérer.
Pour cela, nous allons encapsuler cette ligne de code dans une boucle For… Next.
Ce type de boucle permet de répéter une même opération tant qu’une condition est remplie, tout en incrémentant la valeur d’une variable.
For i = 1 To 3
…
Next
Dans cet exemple, nous avons une variable qui porte le nom de i.
Nous donnons en premier lieu à cette variable la valeur de 1.
Puis nous exécutons une série d’instructions tant que cette valeur est inférieure ou égale à 3.
Le code à répéter est saisi entre cette ligne For et la ligne Next.
Ainsi pour créer trois feuilles vides, nous insérons donc la ligne de création de la nouvelle feuille à l’intérieur de cette boucle :
For i = 1 To 3
Sheets.Add After:=ActiveSheet
Next
Ensuite, étant donné que nous avons utilisé une nouvelle variable i, nous devons déclarer celle-ci avant de pouvoir l’utiliser avec le mot-clé Dim :
Dim i As Integer
Cette ligne est à insérer juste avant la boucle.
Enfin, étant donné que nous souhaitons que ce soit l’utilisateur lui-même qui précise le nombre de feuille à insérer, nous allons le lui demander !
Pour proposer à l’utilisateur de saisir une information, nous utilisons une méthode InputBox :
For i = 1 To InputBox("Combien de nouvelles feuilles voulez-vous insérer ?")
Et voilà !
Pour tester cette procédure, il suffit de se rendre sur la feuille de calcul afin d’insérer un bouton de lancement de macro (par exemple une zone de texte : Menu Insertion / Zone de texte) :
Puis nous effectuons un clic droit sur cette zone de texte afin de sélectionner Affecter une macro…
Dans cette fenêtre, nous choisissons la macro qui correspond (« insererNouvelleFeuilleVide ») et nous cliquons sur le bouton OK.
Lorsque nous cliquons sur la zone de texte, une fenêtre nous demande alors combien de nouvelles feuilles vides nous souhaitons insérer :
Et lorsque nous validons la création, de nouvelles feuilles seront effectivement ajoutées au classeur, dont le nombre dépend directement de la valeur saisie par l’utilisateur !
2.2. La macro dupliquerLaFeuilleActive
À présent, intéressons-nous à la seconde macro que nous avons généré grâce à l’enregistreur de macro, il s’agit de la macro commande qui duplique la feuille en cours d’utilisation : « dupliquerLaFeuilleActive ».
Celle-ci est composée de deux lignes.
La première d’entre elles permet de sélectionner la feuille active pour pouvoir la dupliquer.
En réalité cette ligne est inutile ici car le nom de la feuille est précisé explicitement sur la ligne suivante.
Nous pouvons simplement la supprimer.
Quant à la seconde ligne, nous pouvons constater que celle-ci effectue une copie de la feuille qui porte le nom d’ « excelformation.fr ».
Or nous souhaitons dupliquer la feuille active et non pas forcément une feuille dénommée.
Nous allons donc appliquer cette méthode Copy sur l’objet ActiveSheet, lequel correspond à la feuille de calcul en cours de travail :
ActiveSheet.Copy After:=Sheets(2)
Puis, pour insérer la nouvelle feuille juste après la feuille active, nous allons à nouveau utiliser ActiveSheet en tant qu’argument after :
ActiveSheet.Copy after:=ActiveSheet
Enfin, nous allons encapsuler cette ligne dans une boucle For, exactement comme nous l’avons fait pour la macro précédente :
Dim i As Integer
For i = 1 To InputBox("Combien de nouvelles feuilles voulez-vous insérer ?")
ActiveSheet.Copy after:=ActiveSheet
Next
Après avoir lié cette seconde macro sur un nouveau bouton, nous pouvons maintenant tester :
Et voilà, les nouvelles feuilles ont maintenant été insérées !