Extraction du titre, du nom et du prénom à partir d'une cellule
Le
Choko
Bonjour à tous,
J'ai un petit souci, et malgré toutes les astuces trouvées sur le forum et
sur google, je n'arrive pas à trouver mon bonheur:
J'ai une cellule (A1) contenant le nom d'un de mes contacts: Ex: Mr Jean
Laval
Je cherche à extraire: - en B1 : son titre : Mr
- en B3 : son prénom: Jean
- en B3 : son nom: Laval
Le problème étant que ce contact change régulièrement, j'aurai besoin d'une
formule qui s'adapte automatiquement. Celà est il possible ?
D'avance merci
Choko
J'ai un petit souci, et malgré toutes les astuces trouvées sur le forum et
sur google, je n'arrive pas à trouver mon bonheur:
J'ai une cellule (A1) contenant le nom d'un de mes contacts: Ex: Mr Jean
Laval
Je cherche à extraire: - en B1 : son titre : Mr
- en B3 : son prénom: Jean
- en B3 : son nom: Laval
Le problème étant que ce contact change régulièrement, j'aurai besoin d'une
formule qui s'adapte automatiquement. Celà est il possible ?
D'avance merci
Choko

Poser une question


Je te propose la fonction suivante. Elle extrait le Nième mot d'une chaîne
de caractère, les mots étant séparés par un caratère spécifique.
En B1 : =Scan(A1,1," ")
En B2 : =Scan(A1,2," ")
En B3 : =Scan(A1,3," ")
Elle ne fonctionne que si la grammaire est strictement Civilité blanc Prénom
blanc Nom. Si le prénom est double sans tiret (ex : Jean Pierre), cela
introduit un décalage : il faut donc la paufiner.
Public Function Scan(Chaine As String, position As Integer, separateur As
String) As String
Dim l As Integer, i As Integer, j As Integer
Dim s As Integer
If IsNull(Chaine) Then
Scan = ""
Exit Function
End If
s = 1
l = Len(Chaine)
If l = 0 Then
Scan = ""
Exit Function
End If
If (IsNull(separateur) Or Len(separateur) = 0) Then
separateur = " "
End If
i = 1
Do While (i <= l) And (s <= position)
j = InStr(i, Chaine, separateur, vbTextCompare)
If (IsNull(j) Or j = 0) Then
If s = position Then
Scan = Mid(Chaine, i, l - i + 1)
Else
Scan = ""
End If
Exit Function
Else
If s = position Then
Scan = Mid(Chaine, i, j - i)
Exit Function
Else
s = s + 1
i = j + 1
End If
End If
Loop
End Function
"Choko" news:
Ben pour cela, essaie ce qui suit mais cela ne gère pas les noms composé
comme Jean pascal
[A1] = Nom complet
[B1] = Titre
[C1] = Nom
[D1] = Prénom
[A2] = Mr. Jean Laval
[B2] = =GAUCHE(A2;TROUVE(" ";A2)-1)
[C2] = =DROITE(STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2));TROUVE("
";STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2))))
[D2] = =GAUCHE(STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2));TROUVE("
";STXT(A2;TROUVE(" ";A2)+1;NBCAR(A2)))-1)
Est-ce que cela te convient ?
Salutations
Dédé
--
Pour répondre, enlever le NOSPAM
"Choko" news:
Sans utiliser de formule, essaye d'utiliser le menu Données, Convertir
(après avoir sélectionné le nom), le plus simple
Sinon pour le titre :
=GAUCHE(A1;TROUVE(" ";A1)-1)
Pour le nom :
=DROITE(A1;TROUVE(" ";A1)+1)
Pour le prénom j'ai un exemple de formule mais elle est si compliquée que je
n'y comprends rien...
J'espère avoir bien répondu, bon courage
Marie
"Choko"
Certaines formules marchent, mais pas à tous les coups malheureusement. Si
je change le nom, cela ne fonctionne plus !! Il doit y avoir un moyen
d'avoir une formule qui s'adapte sans passer par une macro.
En plus j'ai certains contacts qui se mettent dans cette cellule certains
jours, et qui n'ont pas de prénom, donc cela fausse tout.
Merci encore
"Choko"
Quels sont les cas qui causent problème? Donne un exemple précis. Y a-t-il de
Jean Pascal ..., comme Dédé te l'a demandé?
Ça fait partie de ta responsabilité d'identifier l'ensemble des cas types (ils
ne doivent guère être nombreux) et de leur résultat attendu.
Salutations,
Daniel M.