Rechercher : dans
Par :

[VBA] nieme occurence

Dernière réponse le 22 jui 2008 à 11:44:01 Steefif, le 22 jui 2008 à 09:56:41 
 Signaler ce message aux modérateurs

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.
La vie c'est comme une boite de chocolat, on ne sait jamais ­sur quoi on va tomber.

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [VBA] nieme occurence » dans :
VBA et les collections d'objets. Voir VBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
VBA Un timer une seconde tout simple Voir En VBA, il n'y a pas (du moins à ma connaissance) de composant Timer. On peut en créer un très facilement. Dans un module de feuille Activer/ dés activer le timer : Placer un bouton sur Feuil1 et mettre le code... Private Sub...

1

Ivan-hoe, le 22 jui 2008 à 11:22:09
  • +1

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.

Répondre à Ivan-hoe

2

 Steefif, le 22 jui 2008 à 11:44:01

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 La vie c'est comme une boite de chocolat, on ne sait jamais ­sur quoi on va tomber.

Répondre à Steefif