[VBA] nieme occurence

Résolu/Fermé
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 - 22 juil. 2008 à 09:56
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 - 22 juil. 2008 à 11:44
Bonjour,
je voudrais savoir si il était possible en VBA de trouver la nieme occurence d'un cartere dans une chaine.
exemple
tata-titi-toto-tutu_oupa_ousi_ounon

trouver la position de la 3eme occurence du caractere - renvoie 15
trouver la position de la 2ème occurence du caractere _ renvoie 25

merci beaucoup de vos lumières.

1 réponse

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 juil. 2008 à 11:22
Bonjour,
il semble qu'il n'y ait pas de fonction VBA qui le fasse directement, mais on peut la construire avec une boucle et la fonction InStr
Dim Caractere As String 'le caractère recherché
Dim Chaine As String 'la chaîne dans laquelle on cherche
Dim N As Integer ' la Nième occurence
Dim LaPosition As Integer ' la position du Nième Caractere dans Chaine

La boucle serait la suivante :
Do
    LaPosition = InStr(LaPosition + 1, Chaine, Caractere)
    If LaPosition = 0 Then Exit Do
    i = i + 1
Loop Until i = N

Elle renvoie 0 s'il n'y a pas de résultat.
Selon l'usage que tu veux en faire, tu peux mettre ce code dans une procédure (Sub) ou dans une fonction (Function)
I.
5
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
22 juil. 2008 à 11:44
merci beaucoup!
post super!
juvé une solution alternative avec des left(right(...))
mais c'ets quand meem mieux comme ca!
plus propre tout de meme!

bonne continuation
0