Macro VB Creation feuilles

Aziz -  
lermite222 Messages postés 9042 Statut Contributeur -
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. GILOU
     
    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+
    0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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)
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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)
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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+
      0