[vbscript] recherche d'un caractère ou d'une chaine de caractères dans une phrase

Contenu du snippet

Cette demande de recherche étant récurrente sur ce Forum,
je propose une solution pédagogique en VBS.
Ce script s'adresse aux débutants.

jean-marc

Source / Exemple :


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Recherche d'une chaine de caractère dans une phrase
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Instruction Option Explicit: Force la déclaration explicite de toutes les variables dans un script
Option Explicit 

'Instruction Const: Déclare des constantes destinées à remplacer des valeurs littérales
Const Texte = "Recherche d'une chaine de caractère dans une phrase" 
Const sChaine = "che"   'chaine recherchée

'Instruction Dim: Déclare des variables et alloue l'espace de stockage
Dim aPos() , iPos
'Instruction ReDim: Déclare les variables de tableau dynamique et attribue ou 
'réattribue l'espace de stockage au niveau de la procédure
'Tableau où sont stockées les positions
ReDim aPos(0)  

'Fonction InStr: Renvoie la position de la première occurrence d'une chaîne 
'à l'intérieur d'une autre
iPos = InStr(1, Texte, sChaine)  

'Instruction While...Wend: Exécute une série d'instructions tant qu'une condition donnée est True
    While iPos <> 0 
'Fonction UBound: Renvoie le plus grand indice disponible pour la dimension indiquée d'un tableau
        ReDim Preserve aPos(UBound(aPos) + 1) 
        aPos(UBound(aPos)) = iPos 
        iPos = InStr(iPos + 1, Texte, sChaine) 
    Wend 

'Instruction If...Then...Else: Exécute un groupe d'instructions soumises à une condition, 
'en fonction de la valeur d'une expression
    If UBound(aPos) > 0 Then 
        Dim i , Resultat 
        Resultat = "L'occurrence """ & sChaine & """ a été trouvée " & UBound(aPos) & " fois " &_
                   "dans l'expression " &vbCrLf&vbCrLf& """" & Texte & """" &vbCrLf 

'Instruction For...Next: Répète un groupe d'instructions un nombre spécifié de fois
'Fonction CStr: Renvoie une expression qui a été convertie en un Variant de sous-type String
'Fonction Len: Renvoie le nombre de caractères contenus dans une chaîne
        For i = 1 To UBound(aPos) 
            Resultat = Resultat & vbCrLf & "Postion: " & CStr(aPos(i)) & "," & CStr(aPos(i)) + Len(sChaine)
        Next  

    Else 
    
        Resultat = "L'occurrence """ & sChaine & """ n'a pas été trouvée dans l'expression " &vbCrLf&vbCrLf&_
        """" & Texte & """"
    End If 

MsgBox Resultat

A voir également

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.