Macro VB Creation feuilles

Fermé
Aziz - 17 déc. 2008 à 17:38
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 17 déc. 2008 à 20:26
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!
A voir également:

4 réponses

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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 déc. 2008 à 18:58
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 déc. 2008 à 19:15
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 déc. 2008 à 20:21
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 déc. 2008 à 20:26
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