Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim o As Object 'déclare la variable o (Onglet)
Dim tot As Double 'déclare la variable tot (TOTal)
With Sheets("TOTAL") 'prend en compte l'onglet "TOTAL"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = .Range("A3:A" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "TOTAL"
For Each cel In pl 'boucle 1 : sur toutes les cellules cel de la plage pl
tot = 0 'réinitialise tot
For Each o In Sheets 'boucle 2 : sur tous les onglets du classeur
If o.Name <> "TOTAL" Then 'condition : si le nom de l'onglet est différent de "TOTAL"
On Error Resume Next 'gestion des erreurs (si une erreur est générée, passe à la ligne suivante
tot = tot + o.Columns(1).Find(cel.Value, , xlValues, xlWhole).Offset(0, 1).Value 'définit le total tot (génère une erreur si la valeur de la cellule cel n'est pas trouvée)
If Err <> 0 Then Err = 0: GoTo suite 'si une erreur a été générée, annule l'erreur, va à l'étiquette "suite"
End If 'fin de la condition
suite: 'étiquette
On Error GoTo 0 'annule la gestion des erreurs
Next o 'prochain onglet de la boucle 2
cel.Offset(0, 1).Value = tot 'place le total tot dans la colonne B de cel
Next cel 'prochaine cellule de la boucle 1
End Sub