Bonjour le fil, bonjour le forum,
Une proposition VBA au cas où ça intéresserait quelqu'un...
Le code :
Sub Macro1()
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 N As Integer 'déclare la variable N (Nombre)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set O = Worksheets("Feuil1") 'définit l'onglet O
O.Range("D2").ClearContents 'efface le contenu de la cellule D2
O.Range("F1").CurrentRegion.Offset(1, 0).ClearContents 'efface les éventuels anciens prénoms en colonne F
TV = O.Range("A1").CurrentRegion 'définit le tableau de valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If UCase(Left(TV(I, 1), 1)) = "P" Then 'condition : si la premiere lettre de la donnée ligne I colonne 1 de TV (convertie en majuscule)est égale à "P"
N = N + 1 'incrémente N
ReDim Preserve TL(1 To N) 'redimensionne le tableau des lignes TL (N colonnes)
TL(N) = TV(I, 1) 'récupere le prénom dans la colonne N de TL
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("D2").Value = N 'renvoie le nombre N dans la cellule D2
O.Range("F2").Resize(N, 1).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans la cellule F2 redimensionnée
End Sub
Le fichier :