Copier des onglets via VBA

12francois12 Messages postés 14 Statut Membre -  
pijaku Messages postés 13513 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.

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. 12francois12 Messages postés 14 Statut Membre
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. 12francois12 Messages postés 14 Statut Membre
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. 12francois12 Messages postés 14 Statut Membre
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      j'ai déjà créé le bouton manuellement Comment? Avec quel barre d'outils? "Formulaire" ou "boîte à outils contrôles"?
      0