Bonjour,
Je souhaiterais, dans une cellule, sélectionner par son rang un mot situé dans un phrase.
Je ne trouve pas d'instruction du genre item(n) ou word(n).
Comment cela se fait-il en VBA ?
Merci à qui pourrait m'aider.
Bonjour,
Je souhaiterais, dans une cellule, sélectionner par son rang un mot situé dans un phrase.
Je ne trouve pas d'instruction du genre item(n) ou word(n).
Comment cela se fait-il en VBA ?
Merci à qui pourrait m'aider.
Hello,
Split() permet de découper une chaine en mot mais avec un seul séparateur ...
Voici une fonction personnalisée qui permet d'intégrer plusieurs séparateurs.
Utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Type typeMOT Count As Long Item() As String End Type Function Mot(ByVal strPhrase As String, _ Optional ByVal strSep As String = " ,?;.:/!}])\|[(-'") As typeMOT Dim i As Long Dim strCurWord As String Dim tmpMOT As typeMOT For i = 1 To Len(strPhrase) If InStr(strSep, Mid(strPhrase, i, 1)) Then If strCurWord & "" <> "" Then tmpMOT.Count = tmpMOT.Count + 1 ReDim Preserve tmpMOT.Item(tmpMOT.Count) tmpMOT.Item(tmpMOT.Count) = strCurWord strCurWord = vbNullString End If Else strCurWord = strCurWord & Mid(strPhrase, i, 1) End If Next i tmpMOT.Count = tmpMOT.Count + 1 ReDim Preserve tmpMOT.Item(tmpMOT.Count) tmpMOT.Item(tmpMOT.Count) = strCurWord Mot = tmpMOT End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 toto = "Bonjour, je m'appelle Bernard-Aristide, et vous ? Moi c'est Marcel" ?mot(toto).Item(4) appelle
Merci caféine.
Il n'existe donc pas de mot clé du genre: item(3) ou word(3)
ou item 3 of "Texte" ?
Je dois donc passer par la fonction que tu me donnes ?
Cordialement.
bonjour flamel ... tu nous as pas précisé avec qu'elle application tu utiliser ton VBA...? et où étaient tes textes ...?
Bonjour bbil.
J'utilise VBA avec Excel.
Le texte est dans une cellule (ou dans une variable).
Il s'agit de prénom et nom, séparés par "/" que j'ai remplacé ensuite par " " avec une petite routine.
Je veux extraire séparément les mots comme on peut le faire dans d'autres langages avec 'word' ou 'item'.
Je veux utiliser le logiciel Gedcom (qui permet la liaison entre différents logiciels de généalogie) pour faire la liaison avec un logiciel que j'avais écrit à l'aide de ce bon vieux HYPERCARD sur MAC.
Exemple:
J'ai "Jean/Dupont" devenu "Jean Dupont" d'où je veux extraire "Jean" et "Dupont", étant entendu que les mots n'ont pas tous la même longueur, puisqu'il y a quelques centaines de "Prénom/Nom" différents à traiter.
S'il n'y a pas d'autre moyen , j'utiliserai la fonction que nous a donnée caféine.
ben tu n'enléve pas le / ... c'est pas la peine est tu utilise split comme on te la proposé plus haut...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub test() Dim st As String Dim t() As String st = "Jean/Dupont" t = Split(st, "/") MsgBox t(0) MsgBox t(1) End Sub
Comme te le dit bbil, soit c'est Split() soit c'est une fonction personnalisée comme celle que je t'ai donnée.
Envoyé par flamel
Merci pour split()
Mais j'ai encore un ennui.
voici l'exemple, en recopiant le modèle donné :
Or, s'il n'y a pas de deuxième article, la présence de t(1) génére une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 xNom2 = Selection st = xNom2 t = Split(st, "/") Prenom = t(0) Nom = t(1) MsgBox Prenom & " " & Nom
Le nombre de "/" peut être variable. Comment gérer ce problème ?
Si je mets la condition : if t(1) is true ... etc, ça ne marche pas.
J'ai réglé le problème en ajoutant :
On Error Resume Next
devant l'instruction Nom = t(1) etc...
Merci les amis.
Cordialement.
Partager