Premier espace à droite

phil33140 -  
 phil33140 -
Bonjour,

Dans une formule Excel,
Je cherche à extraire le prenom d'un chaine de noms et prenom. Exemple :

DUPONT DURANT Louis

donc il faut que je puisse déterminer le nombre de caractéres avant le premier 'espace en partant de la droite.

Merci pour votre aide

6 réponses

Bidouilleu_R Messages postés 1209 Statut Membre 295
 
bonjour,

j'ai rencontré un problème similaire il y a un moment
et j'ai écris ça car il n'existe pas de fonction inverse.
Si cela te convient alors pense à mettre en résolu

=TrouveVersGauche(" ";A8;19) renverra 14

=STXT(A8;F8;2) renverra <Espace L>
Le code ci joint doit être mis dans un module

Sub test()
Dim X, Y As Integer
    Y = Len("DUPOND DURAND Louis")
    X = TrouveVersGauche(" ", "DUPOND DURAND Loius", Y)

End Sub

Public Function TrouveVersGauche(Charactère As String, Chaine As String, Position As Integer) As Integer
Application.Volatile
Dim i As Integer
For i = Position - 1 To 0 Step -1
    If Mid(Chaine, i, 1) = Charactère Then
        TrouveVersGauche = i
        Exit For
    End If
Next

End Function
0
Utilisateur anonyme
 
Oups Bidouilleu... je rafraichis pas et j'ai pas vu ton message. Pardon :)
0
Utilisateur anonyme
 
Bonjour,

Pour isoler le prénom, tu peux sélectionner la colonne avec noms et prénoms avec 3 ou 4 colonnes vides à droite

=> Données / Convertir / cocher délimité / et cocher l'espace comme séparateur / Terminer
Chaque mot entre espace sera dans une colonne.

S'il y a des noms composés sans trait d'union, ils seront scindés. Tu les regroupes sur une autre colonne en concaténant comme ceci =A1&" "&B1 et tu tires vers le bas
Puis un copier / collage spécial / valeur sur les deux nouvelles colonnes nom et prénom récupérés pour figer, et tu peux supprimer le reste.

Sinon, j'ai déjà vu une formule matricielle qui fait ça mais s'il y a des prénoms composés sans trait d'union, ça se complique... mais il y aura certainement d'autres idées !
0
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
Pas de mal
moi j'ai simplifié comme je peux mais je précise que si la fonction ne trouve pas le charactère cherché elle renvoie #VALEUR

; )
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour tout le monde,

et par formule :
=STXT(A1;MAX((STXT(A1;LIGNE(1:50);1)=" ")*LIGNE(1:50));50)
formule matricielle à valider par shift+ctrl+entrée
Si la chaine peut dépasser les 50 car. modifier les 50 (3 fois)
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
PS : une correction car j'avais oublié la recopie incrémentée vers le bas (merci argixu :-) ):
=STXT(A1;MAX((STXT(A1;LIGNE($1:$50);1)=" ")*LIGNE($1:$50));50)

et une autre intéressante qu'argixu n'a pas osé proposer :
=DROITE(A1;EQUIV(" ";STXT(A1;NBCAR(A1) - LIGNE(INDIRECT("1:" & NBCAR(A1)));1);0))

Toutes les 2 sont matricielles
eric
0
phil33140
 
MERCI A TOUS
0