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   -
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.

A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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?
0
12francois12 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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"
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Alors :
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.
0
12francois12 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Génial !!! Merci beaucoup

Simplement, est-il possible de ne pas avoir à ce mettre sur la feuille "maquette" pour lancer la commande??

Je comptais mettre un bouton sur une autre feuille afin de lancer la commande.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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éé :
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
0
12francois12 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Encore merci, mais cette fois ci, ca ne marche pas...

En fait, j'ai déjà créé le bouton manuellement (dans une autre feuille que maquette)

Il faut juste que je puisse y attacher la première macro que tu m'as donné afin de généré les feuillles...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
j'ai déjà créé le bouton manuellement Comment? Avec quel barre d'outils? "Formulaire" ou "boîte à outils contrôles"?
0