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
Configuration: Windows 2003 / Internet Explorer 6.0

6 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. Utilisateur anonyme
       
      Oups Bidouilleu... je rafraichis pas et j'ai pas vu ton message. Pardon :)
      0
  2. 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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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