bonsoir,
pour l'erreur 429, il manque probablement une référence dans VBA
alt F11 pour ouvrir l'editeur VBA
menu tools(outils), ->references
cocher microsoft scripting runtime
adaptation pour prendre en compte le prix selon tes critères ci-dessous.
Sub calculprix()
dl = Cells(Rows.Count, 2).End(xlUp).Row ' dernière ligne détail
dlr = Cells(Rows.Count, "E").End(xlUp).Row 'dernière ligne tableau synthèse
lhdr = dlr - 12 ' ligne entête
dchdr = Cells(lhdr, Columns.Count).End(xlToLeft).Column ' dernière colonne sur ligne entête
If dchdr = 1 Then dchdr = 5
Set doublon = CreateObject("Scripting.Dictionary") ' on crée un dictionnaire pour détecter les doublons
For i = 2 To dl ' on parcourt toutes les lignes détails
If Cells(i, "f") = "" Then ' si pas encore pris en compte
clé = ""
For j = 1 To j
clé = clé & Cells(i, j) 'on concatène les éléments de la ligne dans clé
Next j
If Not doublon.Exists(clé) Then ' si la clé n'existe pas
doublon.Add clé, i 'on l'ajoute au dictionnaire
m = Month(Cells(i, "c")) ' on détermine le mois
Set re = Range(Cells(lhdr, "F"), Cells(lhdr, dchdr)).Find(Cells(i, "B"), lookat:=xlWhole) ' on recherche le type dans la ligne d'entête
If re Is Nothing Then 'on n'a pas trouvé le type
dchdr = dchdr + 1 'on rajoute une colonne dans l'entête
Cells(lhdr, dchdr) = Cells(i, "B") ' on y met le type
c = dchdr ' la colonne correspondant au type
Else
c = re.Column ' la colonne correspondant au type
End If
'-------------------------------------------
prix = Cells(i, "d")
If prix <= 20 Then prix = Cells(i, "e") 'si prix <=20 on prend le prix de la commande
'-------------------------------------------
Cells(m + dlr - 12, c) = Cells(m + dlr - 12, c) + prix ' on totalise en fonction du mois et du type
Cells(i, "f") = "x" 'on indique que la ligne détail a été prise en compte
Else
Cells(i, "f") = "doublon avec " & doublon.Item(clé) 'on indique que la ligne détail a été prise en compte
End If
End If
Next i
End Sub