Macro VB Creation feuilles

Bonjour,

Je me casse la tete depuis lgtemps pour créer une macro, voici mon pb :

J'ai des données dans un tableau simple sur excel. n lignes et y colonnes.

J'ai à coté un modele de facture sur une autre feuille.

Et j'aimerai créer autant de feuilles qu'il y a de lignes dans le tableau. Les nouvelles feuilles doivent étrre créees selon le modele de facture.

Pouvez-vous m'indiiquer la macro à utiliser. Merci beaucoup!
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. bonjour
    au cas ou tu n'as pas de reponse de specialiste en macro essaiecela
    tu fais :outils>macro>nouvelle macro >enregistrer apres tu fait toute la manip que tu cherches a eviter quand c'est fini tu n'oublies surtout pas d'arreter l'enregistrement ensuite affichage >barre d'outils>formulaire tu prend un boton et tu lui affecte la macro tu le place dans 1coin de ta feuille et normlement ca doit pouvoir etre bon
    au cas ou il te manque une etape tu recommence
    a+
    1. Bonjour,

      Voilà un exemple a adapter :
      'Pour cet exemple, on suppose:
      '   - que le tableau se trouve dans l'onglet "Liste factures"
      '   - que le modèle se trouve dans l'onglet "Modèle de facture".
      '   - le tableau commence à la colonne A et à la ligne 2. /!\ Il ne doit pas avoir de cellule vide dans la colonne A,
      '     de la ligne 2 à la dernière ligne du tableau.
      '   - la colonne B du tableau contient le numéro de facture qui sera pris comme nom de l'onglet créé.
      '   - le modèle de facture est sur la plage : A1 à N60
      '
      Sub addNewSheet()
      Dim newSheet As Worksheet
      Dim ws As Worksheet
      Dim wsModele As Worksheet
      Dim lig As Long
      
          Set ws = Worksheets("Liste factures")
          Set wsModele = Worksheets("Modèle de facture")
          lig = 2
          
          With ws
              While .Range("A" & lig).Value <> ""
                  Set newSheet = Sheets.Add(Type:=xlWorksheet)
                  newSheet.Name = .Range("B" & lig).Value
                  newSheet.Move After:=Sheets(Sheets.Count)
                  wsModele.Range("A1:N60").Copy
                  ActiveSheet.Paste Destination:=Worksheets(.Range("B" & lig).Value).Range("A1")
                  Set newSheet = Nothing
              lig = lig + 1
              Wend
          End With
          
          Set ws = Nothing
          Set wsModele = Nothing
      
      End Sub


      Bon courage et n'hésite pas à revenir ici si tu as besoin d'explications.

      ;o)
      1. Contributeur
        Bonjour tous,
        Il y a quand même plus simple que de créer autant de factures qu'il y a de lignes !! ça risque de devenir très lourd comme classeur.
        Il y a moyen de mettre une feuille facture vierge et de la remplir quand ont clic sur une ligne, ce serait moins compliquer et plus heuuuu.. profesionnel.
        A+
        1. B'soir lermite,

          La demande : Et j'aimerai créer autant de feuilles qu'il y a de lignes dans le tableau. Les nouvelles feuilles doivent étrre créees selon le modele de facture.

          Ce à quoi j'ai répondu. Ce n'est pas pour autant la solution que j'adopterai personnellement. ^^

          ;o)
          1. Contributeur
            Bonsoir Polux,
            D'accord avec toi, c'est pour cette raison que j'ai seulement suggéré une autre approche.
            Je ne critiquai absolument pas ta macro.
            Et sorry pour mon deuxième f qui est rester dans mon clavier.
            A+