Bonjour le fil, bonjour le forum,
Peut-être comme ça :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (recherche)
Set OS = Worksheets("Famille") 'définit l'onglet OS
Set OD = Worksheets("Enfants par âge") 'définit l'onglet OD
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
For K = 4 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes K du tableau des valeurs TV
Select Case K 'agit en fonction de la colonne
Case 4, 6, 8, 10, 12, 14 'cas des colonnes 4, 6, 8, 10, 12, 14
'si la donnée ligne I colonne K du tableau des valeurs TV n'est pas vide, définit la recherche R (recherche l'année dans la ligne 1 de l'onglet OD)
If TV(I, K) <> "" Then Set R = OD.Rows(1).Find(TV(I, K), , xlValues, xlWhole)
If Not R Is Nothing Then 's'il existe au moins une occurrence trouvée
LI = OD.Cells(1, R.Column).End(xlDown).Row + 1 'définit la première ligne vide LI de la colonne de l'occurrence trouvée
OD.Cells(LI, R.Column) = TV(I, K - 1) 'renvoie le nom de l'enfant dans la colonne de l'occurrence trouvée
OD.Cells(LI, R.Column + 1) = TV(I, 2) & " " & TV(I, 1) 'renvoie le prénom et le le nom des parents dans la colonne à coté
Set R = Nothing 'vide la recherche R
End If 'fin de la condition
End Select 'fin de l'action en fonction de la colonne
Next K 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
End Sub