Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R1 As Range 'déclare la variable R1 (Recherche 1)
Dim R2 As Range 'déclare la variable R2 (Recherche 2)
Dim T As Long 'déclare la variable T (Total)
Set O = Sheets("Total par action (Auto)") 'définit l'onget O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière Ligne éditée DL de la colonne 1 (=A) de l'onglet O
Set PL = O.Range("A3:A" & DL) 'définit la plage PL
Set D = CreateObject("Scripting.Dictionary") 'définit la dictionnaire D
For Each CEL In PL 'boucle sur toutes les celluiles CEL de la plage PL
'si le dernier caractère de la valeur de la cellule est "%", alimente le dictionnaire D
If Right(CEL.Value, 1) = "%" Then D(CEL.Value) = ""
Next CEL 'prochaine cellule de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des valeurs terminant par % (sans doublon)
For I = 0 To UBound(TMP) 'boucle sur toutes les valeurs du tableau temporaire TMP
Set R1 = PL.Find(TMP(I), , xlValues, xlWhole) 'définit la recherche R1 (recherche TMP(I) dans la plage PL)
'définit la recherche R2 (recherche TMP(I) sans les 4 dernièrs caractères " 50%" dans la plage PL)
Set R2 = PL.Find(Left(TMP(I), Len(TMP(I)) - 4), , xlValues, xlWhole)
If Not R2 Is Nothing Then 'si il exite au moins une occurrence trouvée pour la recherche R2
T = CLng(R1.Offset(0, 1).Value) + CLng(R2.Offset(0, 1).Value) 'définit le total T
R2.EntireRow.Delete 'supprime la ligne de l'occurrence trouvée pour la recherche R2
R1.Value = Left(TMP(I), Len(TMP(I)) - 4) 'redéfinit la valeur de la recherche 1 (sans les 4 derniers caractères " 50%")
R1.Offset(0, 1).Value = T 'place le total dans la cellule adjacente à R1
End If 'fin de la condition
Next I 'prochaine valeur de la boucle
End Sub