Sub Macro1()
Dim S As Worksheet 'déclare la variable S (Suivi)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim PLV As Integer 'déclare la variable PLV (Première Ligne Vide)
Set S = Worksheets("Suivi") 'définit l'onglet S
S.Range("A1").CurrentRegion.Offset(1, 0).EntireRow.Delete 'efface les lignes sauf la première dans l'onglet S
For Each O In Worksheets 'boucle 1 : sur tous les onglets O du classeur
Select Case O.Name 'agit en fonction du nom de l'onglet
Case "Suivi", "MODELE" 'cas où rien ne se passe
Case Else 'autres cas
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
If TV(I, 6) <> "" Or TV(I, 10) <> "" Then 'condition : si la donnée en colonne 6 (=> F) ou en colonne 10 (=>J) n'est pas vide
PLV = S.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la première ligne vide de la colonne A de l'onglet S
O.Cells(I, "A").Resize(1, UBound(TV, 2)).Copy S.Cells(PLV, "A") 'copie la ligne (quel que soit le nombre de colonnes)
S.Cells(PLV, "A").Value = O.Name 'remplace la formule par le nom de l'onglet dans la colonne A
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
End Select 'fin de l'acion en fonction du nom de l'onglet
Next O 'prochain onglet de la boucle 1
S.Range("A1").CurrentRegion.Sort S.Range("A1"), xlAscending, Header:=xlYes 'tri alphabétique de la colonne A
End Sub