planetesud a écrit :
Bonjour,
Merci pour ta réponse Jmd. Mais je pense que j'ai oublié de préciser deux choses :
- La 1ère est que je ne veux pas un total mais je veux que toutes les lignes comportant "B" par exemple soient recopiées. C'est pour cette raison que dans mon exemple, j'ai mis Prime en crédit et Vêtement en débit.
- La 2ème est qu'il y aura des lignes où il n'y aura ni B, ni C.
C'est pour ces raisons que je passe par un code VBA et non une formule.
Je viens de voir que j'ai une autre réponse de "h2so4" , je vais l'étudier et la tester, je fais un retour dès que possible.
Merci de prendre du temps pour moi.
je viens de découvrir les 2 choses que tu as oublié de préciser. Le code fourni n'est pas adapté.
voici le code revu
Sub aargh()
For Each ws In Worksheets
dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set rb = ws.Range("P11:s23")
Set rc = ws.Range("P26:s38")
rc.ClearContents
rb.ClearContents
ic = 0
ib = 0
For i = 5 To dl
If ws.Cells(i, "h") <> "" Then
If ws.Cells(i, "h") = "B" Then Set r = rb.Columns(1): lig = ib: lib = True Else: Set r = rc.Columns(1): lig = ic: lib = False
lig = lig + 1
If lib Then ib = ib + 1 Else ic = ic + 1
Set cr = r.Cells(lig, 1)
cr.Value = ws.Cells(i, "B")
If ws.Cells(i, "E") <> "" Then cr.Offset(0, 1) = ws.Cells(i, "E")
If ws.Cells(i, "F") <> "" Then cr.Offset(0, 2) = ws.Cells(i, "F")
cr.Offset(0, 3).FormulaR1C1 = "=rc[-2]-rc[-1]"
cr.Offset(0, 3).Interior.Color = vbYellow
End If
Next i
Next ws
End Sub