Copier des onglets via VBA
Bonjour,
J'utilise excel 2003 et je suis novice en visual basic.
J'ai un onglet type et une liste de société.
Je souhaiterai copier mon onglet type en renommant chaque nouvel onglet avec le nom des sociétés listées.
Pourriez vous m'aider à creer la commande dans Visual Basic??
Je vous remercie par avance.
J'utilise excel 2003 et je suis novice en visual basic.
J'ai un onglet type et une liste de société.
Je souhaiterai copier mon onglet type en renommant chaque nouvel onglet avec le nom des sociétés listées.
Pourriez vous m'aider à creer la commande dans Visual Basic??
Je vous remercie par avance.
2 réponses
Résumé de la discussion
Un utilisateur d'Excel 2003 sur Windows XP cherche à copier un onglet modèle et à renommer chaque nouvel onglet selon une liste de sociétés via Visual Basic. Plusieurs réponses proposent une macro qui copie systématiquement l onglet « modèle » et crée les feuilles supplémentaires, parfois en les nommant ensuite à partir des valeurs de la colonne A. D'autres échanges évoquent l'utilisation d'un bouton pour lancer la macro et des variantes comme vérifier l'existence d'une feuille avant de la créer ou récupérer les noms depuis la feuille Maquette. En pratique, il est recommandé de tester sur une copie, d'adapter l'adressage des noms à la liste et d'ajouter une vérification pour éviter les doublons lors de la création.
-
ModérateurBonjour,
J'ai un onglet type et une liste de société OK. Ta liste de société comporte combien de noms? Elle se trouve ou (Feuillle : Feuil1, Range : E1:E120)?
Ton onglet (Feuille?) type s'appelle comment?
-
Merci de ta réponse,
Ma liste comporte
- 38 sociétés,
- se trouve dans la feuille "Maquette",
- Range (A5:A42)
Mon onglet type s'appelle "modèle"-
ModérateurAlors :
Le code :Sub CreerOnglet() Dim Lig As Byte For Lig = 5 To 42 Sheets("modèle").Copy After:=Sheets(ThisWorkbook.Worksheets.Count) ActiveSheet.Name = Sheets("Maquette").Range("A" & Lig) Next End Sub
Mise en place :
- copier ce code,
- ouvrir le classeur,
- ALT+F11
- Insertion/Module,
- Coller,
- Fermer Visual Basic Editor
Utilisation :
- se placer sur la feuille Maquette,
- ALT+F8,
- Choix : "CreerOnglet",
- Cliquer sur "Exécuter"
Mise en garde :
Risque de plantage si :
- la liste des sociétés comporte des caractères spéciaux (/, | etc...),
- la liste des sociétés comporte des cellules vides,
- l'orthographe et la casse des noms de feuille "Maquette" et "modèle" n'est pas rigoureusement la même dans le code que dans le classeur.
Note : Tous ces risques peuvent aisément être contournés sous VBA. -
-
ModérateurBien sur que c'est possible.
Voici le code pour placer un bouton (CommandButton1) dans la feuille (Feuil3) de ton choix, avec, en prime, un test pour ne rien faire si l'onglet a déjà été créé :Private Sub CommandButton1_Click() Dim Lig As Byte For Lig = 5 To 10 If FeuilleExiste(Sheets("Maquette").Range("A" & Lig)) Then MsgBox "La feuille : " & Sheets("Maquette").Range("A" & Lig) & " existe déjà dans le classeur" Else Sheets("modèle").Copy After:=Sheets(ThisWorkbook.Worksheets.Count) ActiveSheet.Name = Sheets("Maquette").Range("A" & Lig) End If Next End Sub Function FeuilleExiste(stFeuille As String) As Boolean On Error Resume Next FeuilleExiste = Not (Sheets(stFeuille) Is Nothing) End Function -
-
-