Bonsoir Joelle, le Forum.
Tu trouveras ci-joint un exemple qui pourrait peut-être répondre à ta question.
Sub Traitement()
Dim TabTemp As Variant
Dim TabResult As Variant
Dim Maxi As Long, L As Long, L2 As Long, N As Long
'Charge les données dans un tableau variant temporaire
With Sheets("Feuil1")
Maxi = .Range("A65536").End(xlUp).Row
TabTemp = .Range(.Cells(1, 1), .Cells(Maxi, 6)).Value
End With
'Pour chaque ligne du tableau
For L = 1 To Maxi
'Si la ligne n'est pas "topée"
If Not TabTemp(L, 6) Then
N = N + 1
'Pour les lignes qui suivent
For L2 = L + 1 To Maxi
'Si trouve une correspondance
If TabTemp(L2, 1) = TabTemp(L, 1) Then
'Additionne les prix
TabTemp(L, 5) = TabTemp(L, 5) + TabTemp(L2, 5)
'"Tope" la ligne
TabTemp(L2, 6) = True
End If
Next L2
End If
Next L
'Prépare le tableau des résultats
ReDim TabResult(1 To N, 1 To 5)
N = 0
'Compose le tableau des résultats (= lignes non "topées")
For L = 1 To Maxi
If Not TabTemp(L, 6) Then
N = N + 1
For L2 = 1 To 5
TabResult(N, L2) = TabTemp(L, L2)
'Divise pas 100 les prix (rétablie la virgule)
If N > 1 And L2 = 5 Then TabResult(N, L2) = TabResult(N, L2) / 100
Next L2
End If
Next L
'Colle les résultats dans la feuille
Range(Cells(1, 7), Cells(N, 11)).Value = TabResult
End Sub
Ce n'est sans doute pas la solution idéale, mais ça devrait convenir...
Cordialement,
Didier_mDF