Bonjour le fil, bonjour le forum,
Si une proposition VBA (événementielle Change) intéresse quelqu'un. En F1 (à adapter) la validation de donnée avec la liste des prénoms ...
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'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 K As Integer 'déclare la variable K (incrément)
Dim TD() As Variant 'déclare la variable TD (Tableau des Dates)
If Target.Address <> "$F$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en F1, sort de la procédure
Target.CurrentRegion.Offset(0, 1).Clear 'efface les anciennes valeurs
TV = Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeur TV
If TV(I, 1) = Target.Value Then 'condition : si la donnée ligne I colonne 2 de TV est égale à la valeur de la cellule modifiée
K = K + 1 'incrémente K
ReDim Preserve TD(1 To K) 'redimensionne le tableau des dates (K lignes)
TD(K) = CLng(DateSerial(Year(TV(I, 2)), Month(TV(I, 2)), Day(TV(I, 2)))) 'récupère la date de la donnée ligne I colonne 2 sous forme d'entier long
End If 'fin de la condition
Next I 'prochaine ligne de la bouce
With Range("G1").Resize(K, 1) 'prend en compte la cellule G1 redimensionnée
.Value = Application.Transpose(TD) 'renvoie le tableau TD transposé
.NumberFormat = "m/d/yyyy" 'format date
End With 'fin de la prise en compte dela cellule G1 redimensionnée
Target.Offset(0, 1).Select 'sélectionne la cellule G1
End Sub