Sub Macro1()
Dim E As Worksheet 'déclare la variable E (onglet Export)
Dim F As Worksheet 'déclare la variable F (onglet Feuil2)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes) [type Long si tableau de plus de 32 000 lignes]
Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
Dim I As Integer 'déclare la variable I (Incrément) [type Long si tableau de plus de 32 000 lignes]
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément) [type Long si tableau de plus de 32 000 lignes]
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set E = Worksheets("Export") 'définit l'onglet E
Set F = Worksheets("Feuil2") 'définit l'onglet F
TV = E.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
F.Range("A1").CurrentRegion.ClearContents 'efface d'éventuelles anciennes données dans l'onglet F
F.Range("A1").Resize(1, NC).Value = Application.Index(TV, 1) 'renvoie dans A1 redimensionnée la première ligne du tableau des valeurs TV
K = 1 'initialise K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 28) = "RETARD" Then 'condition : si la donnée ligne I colonne 28 (=> colonne AB) est égale à "RETARD"
ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau des lignes TL (autant de lignes que TV a de colonnes, K colonnes)
For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la valeur en colonne J de TV (= transposition)
Next J 'prochaine colonne de la boucle 2
K = K + 1 'incrémente K (ajoute une nouvelle colonne au tableau des lignes TL)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si K est supérieure à un (=> au moin sune iccurrence trouvée), renvoie dans A2 redimensionnée le tableau TL transposé
If K > 1 Then F.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub