FAQ VBScriptConsultez toutes les FAQ
Nombre d'auteurs : 16, nombre de questions : 108, dernière mise à jour : 2 mars 2019 Ajouter une question
Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB.
Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript.
Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil.
L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.
- Comment extraire une partie d'une chaîne ?
- Comment connaitre la longueur d'une chaîne ?
- Comment concaténer deux chaînes ?
- Comment "éclater" une chaîne dans un tableau ?
- Comment transformer un tableau en une chaîne?
- Comment rechercher une chaîne de caractères dans une autre ?
- Comment utiliser les expressions régulières ?
- Comment tester une chaîne de caractères avec une expression régulière ?
- Comment interpréter une chaîne string ?
- Comment récupérer le retour d'une fonction sans passer par un fichier ou DataObject ?
On retrouve les fonctions habituelles d'extraction d'une partie de chaîne de Visual basic :
- Left(chaîne, NombreDeCaracteres) : Pour extraire la partie gauche de la chaîne donnée en paramètre
- Right(chaîne, NombreDeCaracteres) : Pour extraire la partie droite de la chaîne donnée en paramètre
- Mid(chaîne, posdepart, NombreDeCaracteres) : Pour extraire le nombre de caractères spécifiés, à partir d'un caractère donné (posdepart)
Code vb : | Sélectionner tout |
1 2 3 4 5 | Dim st st="Bienvenue sur DVP" Wscript.Echo Left(st,9) Wscript.Echo Mid(st,11,3) Wscript.Echo Right(st,3) |
sur
DVP
Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre de caractères disponibles dans la chaîne après la position de départ, le caractère en position de départ et tous les caractères qui lui succèdent sont retournés.
Ce qui donne :
Code vb : | Sélectionner tout |
1 2 3 4 | Dim st st = "Bienvenue sur DVP" Wscript.Echo Mid(st,11) Wscript.Echo Mid(st,11,255) |
sur DVP
En utilisant la fonction Len() :
Code vb : | Sélectionner tout |
1 2 3 | Dim st st="Bienvenue sur DVP" Wscript.Echo Len(st) |
L'opérateur usuel de concaténation est : &
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Dim st1 Dim st2 ' ' Concaténation de la "valeur" de 2 variable ' st1 = "Bienvenue " st2 = "sur dvp" Wscript.Echo st1 & st2 ' Une chaîne et une variable : Wscript.Echo st1 & " a vous" |
ce qui donne :
Bienvenue a vous
Il est aussi possible (mais déconseillé) d'utiliser l'opérateur : +
Celui-ci se comporte en opérateur de concaténation lorsque les 2 membres de l'opération sont des chaînes
Code vb : | Sélectionner tout |
1 2 3 4 | Wscript.Echo "à voir " + st2 'Attention dans l'utilisation de l'opérateur + Wscript.Echo "1" + "2" |
12
et en opérateur d'addition lorsque l'un des opérantes est numérique
Code vb : | Sélectionner tout |
1 2 | Wscript.Echo "3" + 2 Wscript.Echo 1+2 |
3
Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type :
Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]'
Code vb : | Sélectionner tout |
Wscript.Echo "a" + 1
La fonction Split permet "d'éclater" le contenu d'une chaîne dans un tableau, en fonction d'un caractère séparateur
Code vb : | Sélectionner tout |
1 2 3 4 5 6 | Dim st,i,tb st="Antoine,Pierre,Jacques,Alain" tb = split(st,",") For i = lbound(tb) to ubound(tb) Wscript.echo tb(i) next |
Pierre
Jacques
Alain
Code vb : | Sélectionner tout |
For i = 0 to ubound(tb)
La fonction Join permet de regrouper tous les éléments d'un tableau de chaînes en une chaîne, tout en précisant un séparateur :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Dim st,tb(3) Tb(0)="Antoine" tb(1)="Pierre" tb(2)="Jacques" tb(3)="Alain" st = join(tb,",") Wscript.echo st |
Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est la position de son premier caractère dans ch1, sinon la fonction renvoie 0.
Code vb : | Sélectionner tout |
1 2 | pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 24 pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 0 |
La bibliothèque Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic. Il faut l'ajouter dans les références du projet.
Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la recherche en appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitez faire une recherche. La méthode Execute() renvoie les occurrences dans une collection. Si vous avez donné la valeur True à la propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première.
Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Public Function EmailValide(ByVal email ) Dim regEx , occurrences Set regEx = New RegExp regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules regEx.Global = False 'Renvoyer seulement la première occurrence Set occurrences = regEx.Execute(email) EmailValide = (occurrences.Count = 1) End Function |
Il faut pour cela utiliser l'objet RegExp qui va permettre de valider une chaîne de caractères en fonction d'un pattern :
Code vb : | Sélectionner tout |
Set RegularExpressionObject = New RegExp
Ensuite, il faut le paramétrer en fonction de la recherche :
Code vb : | Sélectionner tout |
1 2 3 4 | With RegularExpressionObject .Pattern = Pattern .IgnoreCase = Boolean End With |
La pattern est l'expression régulière et IgnoreCase permet d'indiquer s'il faut prendre en compte ou non la casse.
Ensuite, une fois l'objet paramétré, il suffit d'utiliser la méthode Test avec la chaîne à tester en paramètre :
Code vb : | Sélectionner tout |
RegularExpressionObject.Test(aTester)
Cette méthode va nous renvoyer True ou False en fonction du résultat.
Voici par exemple, la méthode pour valider une adresse IP :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Set RegularExpressionObject = New RegExp With RegularExpressionObject .Pattern = "^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$" .IgnoreCase = False End With MsgBox RegularExpressionObject.Test("172.16.18.21") MsgBox RegularExpressionObject.Test("300.22.194.37") |
Ce qui nous retourne true pour la première chaîne et False pour la seconde.
III-B. Les expressions régulières
En utilisant la méthode Eval :
Code vb : | Sélectionner tout |
1 2 3 4 | Dim toto toto = "SUPER * 10" MsgBox Eval(Replace(toto, "SUPER", 500)) |
L'astuce consiste à appeler la fonction dans la boite de saisie InputBox en la mettant comme 3e paramètre dans cette fonction :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Option Explicit InputBox "", "", Test Function Test() Const ForReading = 1 Dim fso, F Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Wscript.ScriptName, ForReading, False) Test = f.ReadAll End Function |
Le retour de la fonction étant sélectionné par défaut, il suffit de le copier puis le coller là où vous voulez.
Bien entendu, le retour de la fonction ne doit pas excéder la longueur permise par la boite de saisie (à savoir 1024 caractères).
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.