Premier espace à droite

Fermé
phil33140 - 4 mars 2010 à 13:30
 phil33140 - 5 mars 2010 à 11:39
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 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
4 mars 2010 à 16:08
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
4 mars 2010 à 16:12
Oups Bidouilleu... je rafraichis pas et j'ai pas vu ton message. Pardon :)
0
Utilisateur anonyme
4 mars 2010 à 16:10
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 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
4 mars 2010 à 16:17
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
4 mars 2010 à 17:50
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
4 mars 2010 à 21:32
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
MERCI A TOUS
0