Bonjour,
Ci-joint ma solution sans formule matricielle :
A2 = Nom et prénom
B2 = Nom
C2 = Prénom
Mettre en B2 la formule :
=SUPPRESPACE(mot(A2;1) & " " &SI(EXACT(mot(A2;2);mot(MAJUSCULE(A2);2))=VRAI;mot(A2;2);"")& " " &SI(EXACT(mot(A2;3);mot(MAJUSCULE(A2);3))=VRAI;mot(A2;3);"")& " " &SI(EXACT(mot(A2;4);mot(MAJUSCULE(A2);4))=VRAI;mot(A2;4);"")& " " &SI(EXACT(mot(A2;5);mot(MAJUSCULE(A2);5))=VRAI;mot(A2;5);""))
Mettre en C2 la formule :
=SUPPRESPACE(STXT(A2;NBCAR(B2)+1;100))
Mettre dans un module la fonction "Mot" :
Public Function Mot(PlageAnalysée As String, NuméroOdreDuMot As Byte) As String
Dim NbeMotMaxi As Byte
'Existence de données et suppression des espaces inutiles
'--------------------------------------------------------
If PlageAnalysée = "" Then
Mot = ""
Exit Function
Else
PlageAnalysée = Application.WorksheetFunction.Trim(PlageAnalysée)
End If
'Découpage de la plage en nom et récupération du nom
'---------------------------------------------------
Tableau = Split(PlageAnalysée)
Mot = ""
If NuméroOdreDuMot - 1 <= UBound(Tableau) Then Mot = Tableau(NuméroOdreDuMot - 1)
End Function