Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set OS = Worksheets("base") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) <> "" Then ''condition : si la donnée en ligne I, colonne 1 de TV n'est pas vide
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Worksheets(TV(I, 1)) 'définit l'onglet de destination OD (génère une erreur si l'onglet n'existe pas)
If Err <> 0 Then 'si une erreur a été générée
MsgBox "L'onglet " & TV(I, 1) & " n'exite pas !" 'message
Err.Clear 'supprime l'erreur
GoTo suite 'va à l'étiquette suite
End If 'fin de la condition
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
DEST.Resize(1, UBound(TV, 2)) = Application.Index(TV, I) 'renvoie la ligne I dans DEST
End If
suite: 'étiquette
Next I 'prochaine ligne de la boucle
End Sub