[VBA] nieme occurence
Résolu
Steefif
Messages postés
485
Date d'inscription
Statut
Membre
Dernière intervention
-
Steefif Messages postés 485 Date d'inscription Statut Membre Dernière intervention -
Steefif Messages postés 485 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- [VBA] nieme occurence
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
1 réponse
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
La boucle serait la suivante :
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.
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.
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