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.

2 réponses

  1. Modérateur
    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
    1. 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
      1. Modérateur
        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
      2. 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
      3. Modérateur
        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
      4. 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
      5. Modérateur
        j'ai déjà créé le bouton manuellement Comment? Avec quel barre d'outils? "Formulaire" ou "boîte à outils contrôles"?
        0