Public DL, NoL ' En public, évite les passages de paramètres entre macros.
Sub Recap()
Derlig = Range("A65500").End(xlUp).Row ' Dernière ligne de Commandes
Sheets("Récap").Range("A2:M10000").ClearContents ' Efface données de Récap
For NoL = 1 To Derlig ' Pour toutes les lignes de Commandes
If Cells(NoL, 1) = "N° de commande :" Then ' Si N° de commande alors ... c'est une nouvelle commande
ExportData ' On exporte les data vers Recap
End If
Next NoL
End Sub
Sub ExportContext()
' Remplit le contexte
' La ref cellule est la cellule qui contient N° de commande. Donc offset L et C à partir de là.
Set Cde = Sheets("Commandes") ' Cde pour Commandes
With Sheets("Récap")
.Cells(DL, "A") = Cde.Cells(NoL + 0, "B") ' Bon Cde
.Cells(DL, "B") = Cde.Cells(NoL - 2, "E") ' Nom
.Cells(DL, "C") = Cde.Cells(NoL - 2, "D") ' Prénom
.Cells(DL, "D") = Cde.Cells(NoL - 2, "G") ' CodPost
.Cells(DL, "L") = Cde.Cells(NoL + 1, "B") ' DateCommande
.Cells(DL, "M") = Cde.Cells(NoL + 0, "J") ' DatePaiement
End With
End Sub
Sub ExportData()
' Exporte chaque article
LA = NoL + 4 ' Premier article ( LA pour Ligne Article )
Set Cde = Sheets("Commandes") ' Cde pour Commandes
With Sheets("Récap")
While Sheets("Commandes").Cells(LA, "A") <> "" ' Tant qu'il y a un article
DL = 1 + .Range("A65500").End(xlUp).Row ' Cherche dernière ligne de Récap
ExportContext ' Stocke le contexte ( Nom, Prénom ... )
.Cells(DL, "E") = Cde.Cells(LA, "A") ' Ref article
.Cells(DL, "F") = Cde.Cells(LA, "B") ' Qté
.Cells(DL, "G") = Cde.Cells(LA, "D") ' Détail
.Cells(DL, "H") = Cde.Cells(LA, "G") ' PU VDI
.Cells(DL, "I") = Cde.Cells(LA, "B") ' PUC
.Cells(DL, "J") = Cde.Cells(LA, "I") ' Tot VDI
.Cells(DL, "K") = Cde.Cells(LA, "H") ' TotClient
LA = LA + 1 ' Ligne suivante
Wend
End With
End Sub