Copie automatique du code de la feuille de calcul (Microsoft Excel)
Tim note correctement qu’un utilisateur peut cliquer avec le bouton droit sur un onglet de feuille de calcul, puis sélectionner Afficher le code pour ouvrir une feuille de code VBA pour la feuille de calcul. Il a écrit du code qui manipule automatiquement les cellules, les colonnes et les lignes. Ce code doit être disponible sur chaque feuille de calcul d’un classeur, même si l’utilisateur ajoute de nouvelles feuilles de calcul. Tim se demande s’il existe un moyen, en utilisant VBA, de copier automatiquement le code d’une feuille de calcul dans une nouvelle feuille de calcul du classeur.
Il existe plusieurs façons d’aborder ce problème. Une façon – et peut-être la plus simple – consiste à supprimer les macros de la feuille de code de la feuille de calcul et à les déplacer vers le module ThisWorkbook. La feuille de code de la feuille de calcul est ce que vous voyez lorsque vous cliquez avec le bouton droit sur un onglet de feuille de calcul. Le code de cette feuille est destiné à gérer les événements qui se produisent dans la feuille de calcul et uniquement dans cette feuille de calcul. Si vous déplacez le code vers le module ThisWorkbook, les événements peuvent toujours être gérés, mais ces événements s’appliquent à toutes les feuilles de calcul du classeur.
Par exemple, lorsque vous cliquez avec le bouton droit sur un onglet de feuille de calcul et que vous regardez la fenêtre de code, vous travaillez initialement dans l’événement Worksheet_SelectionChange. Si vous souhaitez déplacer ce code vers le module ThisWorkbook, vous pouvez le placer dans l’événement Workbook_SheetSelectionChange.
Si un tel «changement de niveau» de votre code ne fonctionne pas pour une raison quelconque, une autre approche consiste à créer un modèle de feuille de calcul dans le classeur.
Donnez-lui un nom tel que « MyMaster » et assurez-vous qu’il inclut tout le code que vous souhaitez ajouter à vos feuilles de calcul nouvellement créées. Vous pouvez même masquer cette feuille de calcul, si vous le souhaitez, afin de ne pas distraire les utilisateurs. Ensuite, placez la macro suivante dans le module ThisWorkbook:
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim tmpName As String tmpName = Sh.Name Sheets("MyMaster").Copy Before:=Sheets(Sh.Name) Application.DisplayAlerts = False Sheets(Sh.Name).Delete Application.DisplayAlerts = True Sheets("MyMaster (2)").Name = tmpName End Sub
Ce code est déclenché chaque fois qu’une nouvelle feuille de calcul est ajoutée au classeur. Il regarde le nom de la feuille de calcul nouvellement ajoutée (qui sera quelque chose comme « Sheet4 ») et enregistre ce nom dans une variable temporaire.
Le code copie ensuite la feuille de calcul MyMaster dans le classeur (qui copie également les macros de la feuille de calcul), supprime la feuille de calcul créée à l’origine, puis renomme la nouvelle copie MyMaster pour qu’elle porte le même nom que la feuille de calcul d’origine.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (7884) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
lien: / excel-Copying_Worksheet_Code_Automatically [Copier le code de la feuille de travail automatiquement]
.