Premier espace à droite

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. Contributeur
    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
    1. Contributeur
      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
      1. 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
        1. 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
          1. 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. Oups Bidouilleu... je rafraichis pas et j'ai pas vu ton message. Pardon :)
              0