extraction de données avec une macro pour impression multiple

doudou080

XLDnaute Nouveau
Bonjour a tous

je cherche le moyen de récolter des données d'une feuille pour les faire apparaître dans un masque avec un n° de chrono qui change a chaque fois.
une ligne par bon a la date du jour ou on ouvre le fichier.
pouvoir imprimer tous les bon les un apres les autres en double exemplaire si posible

je ne sais pas si je suis claire dans mes explications
 

Pièces jointes

  • recept. palette + numerot facture 1.xls
    73.5 KB · Affichages: 40

doudou080

XLDnaute Nouveau
bonjour
j'ai intégré ton module a ma macro.
hé bien ça tourne,chapeau bas monsieur Boisgontier
juste un souci quand je la lance elle imprime aussi les lignes vides du plan de chargement.
cordialement
 

Pièces jointes

  • recept. palette + numerot facture 1 - Copie.xls
    85.5 KB · Affichages: 26
  • repete macro 2copies .txt
    3.5 KB · Affichages: 21

doudou080

XLDnaute Nouveau
ca y est elle tour maintenant sans faire d'impression sur les lignes vides.
Dim DerLig As Long
With Worksheets("plan chargement") 'A adapter
DerLig = .Range("A1").End(xlDown).Row
MsgBox "Numéro de la dernière ligne : " & DerLig
End With
il me reste juste un truc ou je seche.
mon n° gestion des supports revient a zero et je voudrais qu'il garde en mémoire pour la prochaine edition
Dim num_fact As Integer
'mettre une valeur de départ dans la cellule G1
num_fact = Range("G1")
num_fact = num_fact + 1
Range("G1") = num_fact
 

Pièces jointes

  • recept. palette + numerot facture 1 - Copie.xls
    86.5 KB · Affichages: 25

cp4

XLDnaute Barbatruc
hé bien ça tourne,chapeau bas monsieur Boisgontier

Bonjour,

Avant toutes choses, Je ne suis pas Jacques Boisgontier. J'ai mis un lien vers son site car c'est une mine d'or pour ceux et celles qui veulent apprendre le VBA ou se perfectionner. C'est un site très très riche que je te conseille.

La macro tournée bien dès le début. Il fallait juste la réaménager pour le n° (à incrémenter).
Tu m'as embrouillé avec ton tri qui ne voulait rien dire.

Question: as-tu au moins imprimer 2 fois? Si c'est le cas, il te faut des lunettes.
Car avec ta macro, tu récupères la première ligne, puis le reste met en forme.
et à la fin macro te réédite la première ligne avec le numéro 0001.

Au final, tu auras imprimé 2 fois la 1ère ligne avec des n° différents.
Pour les autres feuilles c'est bon, car c'est la boucle de ma macro qui continue.

Ajuste la fenêtre de vbe afin que tu puisses voir ta feuille de calcul, ensuite n'importe où dans le code et appuie sur la touche F8, tu verras le déroulement de la macro. le code s’exécute ligne par ligne à chaque fois avec la touche F8.

Le code adapté
VB:
Sub Macro1()
' Touche de raccourci du clavier: Ctrl+a

    Dim num_fact As Integer, DerLig As Long
Application.ScreenUpdating = False
    'Mémoriser valeur de départ de la cellule G1
    num_fact = Range("G1")

    With Worksheets("plan chargement")    'A adapter
        DerLig = .Range("A1").End(xlDown).Row
        '        MsgBox "Numéro de la dernière ligne : " & DerLig
    End With

    With Sheets("gestion des supports")
        For i = 2 To DerLig
            .Range("G1") = num_fact + (i - 1)
            .Range("G1").Borders.Weight = xlThin
            .Range("G1").HorizontalAlignment = xlLeft
            .Range("G1").VerticalAlignment = xlCenter

            .Range("F4:G4") = Sheets("plan chargement").Range("A" & i)
            .Range("F4:G4").Borders.Weight = xlThin
            .Range("F4:G4").HorizontalAlignment = xlCenter
            .Range("F4:G4").VerticalAlignment = xlCenter

            .Range("F7:G7") = Sheets("plan chargement").Range("L" & i)
            .Range("F7:G7").Borders.Weight = xlThin
            .Range("F7:G7").HorizontalAlignment = xlCenter
            .Range("F7:G7").VerticalAlignment = xlCenter

            .Range("D20") = Sheets("plan chargement").Range("I" & i)
            .Range("D20").Borders.Weight = xlThin
            .Range("D20").HorizontalAlignment = xlCenter
            .Range("D20").VerticalAlignment = xlCenter
            .Range("D20").Font.Name = "Arial"
            .Range("D20").Font.Size = 16

            .Range("E20:F20") = Sheets("plan chargement").Range("J" & i)
            .Range("E20:F20").Borders.Weight = xlThin
            .Range("E20:F20").HorizontalAlignment = xlCenter
            .Range("E20:F20").VerticalAlignment = xlCenter
            .PrintOut copies:=2    'impression 2 copies
        Next i
    End With
Application.ScreenUpdating = True
End Sub
évite les 'select' ça ralenti le code.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa