C'est ce qu'il vous faut si vous avez besoin de récupérer le 9ème élément contenu dans une chaîne de caractère dont chaque élément est séparé par une virgule, un espace ou n'importe quoi d'autre (CR, LF ...).
Le séparateur peut lui-même contenir plusieurs caractères.
Si le numéro est trop grand (que la chaîne ne comporte pas autant d'éléments), le résultat sera une chaîne vide.
Exemples :
Chaine = "VBFrance est vraiment un super site bien pratique"
Résultat = element(Chaine, 5, " ") ' renverra "super"
ou encore
Résultat = element(Chaine, 1, "super") 'renverra "VBFrance est vraiment un "
Résultat = element(Chaine, 2, "super") 'renverra " site bien pratique"
et bien sur
Résultat = element(Chaine, 5, "t") ' renverra "ique"
Source / Exemple :
Public Function Element(ByVal Texte As String, _
ByVal Numero As Integer, _
ByVal Séparateur As String) As String
'--- Cette fonction renvoie le texte equivalent au Xeme element (Numero de 1 a X)
' de la chaine Texte. Chaque element etant séparé par des Séparateurs
' Le séparateur peut être lui-même une chaîne de plusieurs caratères
' Commentaire, aide : the_jokez@hotmail.com
Dim Debut As Integer, r As Integer, No As Integer
If Right(Texte, Len(Séparateur)) <> Séparateur Then Texte = Texte & Séparateur
Debut = 1
No = 1
Element = ""
Element_0:
r = InStr(Debut, Texte, Séparateur)
If r = 0 Then GoTo Element_Fin
If Numero = No Then GoTo Element_10
No = No + 1
Debut = r + Len(Séparateur)
If r >= Len(Texte) Then GoTo Element_Fin
DoEvents
GoTo Element_0
Element_10:
Element = Mid(Texte, Debut, r - Debut)
Element_Fin:
End Function
Conclusion :
Ca marche très bien mais c'est un peu long dès que l'on cherche le 100è élément et plus. Dans ce cas, il vaut meux utiliser la fonction Split (je vous le proposerai un de ces jours)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.