Bonjour David, Chris, bonjour le forum,
Une proposition VBA avec le code ci-dessous :
Sub Macro1()
Dim OD As Worksheet 'déclare la variable OD (Onglet Data)
Dim OS As Worksheet 'déclare la variable OS (Onglet Synthese)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set OD = Worksheets("Data") 'définit l'onglet OD
Set OS = Worksheets("Synthese") 'définit l'onglet OS
For Each TS In OD.ListObjects 'boucle 1 : sur tous les tableaux structurés de l'onglet OD
TV = Range(TS) 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV
If TV(I, 1) = "x" Then 'condition : si la donnée ligne I colonne 1 de TV est égale à "x"
K = K + 1 'inrémente K
ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau des lignes (2 lignes, K colonnes)
TL(1, K) = TV(I, 2) 'récupère dans la ligne 1 de TL la donnée en colonne 2 de TV (=> Transposition)
TL(2, K) = TV(I, 3) 'récupère dans la ligne 2 de TL la donnée en colonne 3 de TV (=> Transposition)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
Next TS 'prochain tableau structuré de la boucle 1
OS.ListObjects(1).ListRows.Add 'ajoute une ligne au tableau structuré de l'onglet OS
OS.Range("B3").Resize(K, 2).Value = Application.Transpose(TL) 'renvoie dans B3 redimensionnée le tableau TL transposé
End Sub