Copier des onglets via VBA
12francois12
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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.
A voir également:
- Copier des onglets via VBA
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Restaurer les onglets chrome - Guide
- Historique des copier coller - Guide
- Partager des photos via un lien - Guide
2 réponses
Bonjour,
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?
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"
Ma liste comporte
- 38 sociétés,
- se trouve dans la feuille "Maquette",
- Range (A5:A42)
Mon onglet type s'appelle "modèle"
Alors :
Le code :
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.
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.
Bien 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éé :
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