Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
Dim DL As Byte '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 LT As Integer 'déclare la variabler LT (Ligne du Total)
If Target.Address <> "$B$11" Then Exit Sub 'si le double-clic a lieu ailleurs qu'en B11, sort de la procédure
Cancel = True 'évite le mode [Édition] lié au double-clic
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("A12:A" & DL) 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set O = Sheets(CEL.Value) 'définit l'onglet O (génère une erreur si l'onglet n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'efface l'erreur
MsgBox "L'onglet [" & CEL.Value & "] n'existe pas ! Veuillez corriger l'édition dans la cellule." 'message
CEL.Select 'sélectionne la cellule contenant l'erreur
Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0
LT = O.Columns(1).Find("TOTAL", , xlValues, xlWhole).Row
CEL.Offset(0, 1).Value = O.Cells(LT, 5).Value 'récupère dans la cellule adjacente le total de l'onglet correspondant
Next CEL 'prochaine cellule de la boucle
End Sub