Private Sub CommandButton1_Click()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim av As Range 'déclare la variable av (Anciennes Valeurs)
Dim x As Long 'déclare la variable x (incrément de ligne)
Dim y As Byte 'déclare la variable y (incrément de colonne)
Dim z As Long 'déclare la variable x (incrément ed ligne)
Dim nb As Byte 'déclare la variable nb (NomBre de valeurs)
Dim tot As Long 'déclare la variable tot (TOTal)
Set o = Sheets("Export Worksheet") 'définit l'onglet o
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne de l'onglet
Set pl = o.Range("A2:A" & dl) 'définit la plage pl (cellules éditées de la colonne A)
Set av = o.Range("K27").CurrentRegion 'définit la plage des anciennes valeur
Set av = av.Offset(1, 0).Resize(av.Rows.Count - 1) 'redéfinit la plage des anciennes valeurs (enlève la ligne de titres)
av.Clear 'efface les anciennes valeurs
For x = 2 To dl 'boucle sur toutes les cellule de la plage pl (en commançant par la ligne 2)
tot = 0 'réinitialise le total
z = x 'met a jour la variable z
nb = Application.WorksheetFunction.CountIf(pl, Cells(x, 1).Value) - 1 'définit le nombre de fois que la valeur apparaît dans le tableau
Set dest = o.Cells(Application.Rows.Count, 11).End(xlUp)(2) 'définit la cellule de destinatikon
dest.Value = Cells(x, 1).Value 'place le code dossier
dest.Offset(0, 1).Value = Cells(x, 2).Value 'place le code client
dest.Offset(0, 2).Value = Cells(x, 3).Value 'place le code forfait
For y = 0 To nb 'boucle sur le nombre d'occurrrences
dest.Offset(0, y + 3).Value = Cells(z, 5) 'place l'occurrence
tot = tot + Cells(z, 7) 'calcule le total
z = z + 1 'incrément la variable z (décalle d'une ligne vers le bas)
Next y 'prochaine occurrence de la boucle
dest.Offset(0, 11).Value = tot 'place le total
dest.Offset(0, 12).Value = Cells(z - 1, 9).Value 'place le code MDT
x = x + nb
Next x
End Sub