Sub Macro1()
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim I As Long 'déclare la variable I (Incrément)
Dim TR As Variant 'déclare la variable TR (Tableau de Recherche)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set OD = Worksheets("Global hors WE") 'définis l'onglet OD
TV = OD.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 4 To UBound(TV, 1) 'boucle 1 : sur toute les lignes I du tableau des valeurs TV
K = K + 1 'incrémente K
ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (3 lignes, K colonnes)
TL(1, K) = "'" & CStr(TV(I, 1)) 'récupère dans la ligne 1 de TL la valeur de la colonne 1 de TV (convertie en texte)
For Each O In Sheets 'boucle 2 : sur tous les onglets O du classeur
If Not O.Name = "Global hors WE" Then 'condition 1 : si le nom de l'onglet n'est pas "Global hors WE"
TR = O.Range("A1").CurrentRegion 'définit le tableau de recherche TR
For J = 3 To UBound(TR, 1) 'boucle 3 sur toutes les lignes J du tableau de recherche TR
If TV(I, 1) = TR(J, 1) Then 'condition 2 : si la donnée en colonne 1 de TV est égale à la donnée en colonne 1 de TR
TL(2, K) = TR(J, 2) 'récupère dans la ligne 2 de TL la valeur de la colonne 2 de TR
TL(3, K) = TR(J, 3) 'récupère dans la ligne 3 de TL la valeur de la colonne 3 de TR
GoTo suite 'va à l'étiquette "suite"
End If 'fin de la condition 2
Next J 'prochaine ligne de la boucle 3
End If 'fin de la condition 1
Next O 'prochain onglet de la boucle 2
suite: 'étiquette
Next I 'prochaine ligne de la boucle 1
OD.Range("A4").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans A4 redimensionnée de l'onglet OD le tableau TL transposé
End Sub