
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.
- Définition
- Comment changer l'interpréteur de script par défaut ?
- Le typage des variables
- Comment programmer une pause dans le code ?
- Comment interrompre un script ?
- Comment obtenir le nom et chemin complet d'un script en cours d'exécution ?
- Comment utiliser les arguments en ligne de commande ?
- Comment utiliser la boîte de dialogue de sélection d'un répertoire ?
- Comment ouvrir la boîte de dialogue de sélection d'un fichier ?
- Comment ouvrir la boîte de dialogue de sélection d'un fichier ? (compatible vista et seven)
- Comment ouvrir la boîte de dialogue de sélection d'un fichier ? (compatible toutes versions avec filtres et répertoire de départ)
- Faire disparaitre une MsgBox au bout d'un certain temps ?
- Comment accéder au presse-papiers ?
VBScript (Microsoft Visual Basic Scripting Edition) est un langage de script d'usage général, dérivé de Microsoft Visual Basic.
Apparu avec Internet Explorer 3, il est utilisable soit en ligne de commande, soit directement dans l'environnement Windows
ou dans la plupart des navigateurs web.
VBScript est un langage interprété, ne nécessitant pas de compilateur spécifique, contrairement aux langages compilés, mais il a besoin d'un interpréteur,
capable de comprendre et d'exécuter les instructions contenues dans le script.
Installé de base depuis Windows 98, l'interpréteur le plus couramment utilisé dans l'environnement Windows est wscript.exe
L'équivalent de wscript.exe pour une exécution en ligne de commande est cscript.exe
Les fichiers de type VBScript ont généralement l'extension .vbs
Deux interpréteurs de script sont disponible sous Windows :
- Wscript : pour le mode graphique
- Cscript : pour le mode texte
pour changer l'interpréteur par défaut, on utilise la commande :
Pour choisir Wscript :
Code : | Sélectionner tout |
wscript //H:WScript
Pour choisir Cscript :
Code : | Sélectionner tout |
wscript //H:CScript
Nota : On préférera utiliser CScript, qui présente l'avantage d'avoir une commande d'affichage "Wscript.Echo" non bloquante là où WScript utilise une boîte de message (message box) réclamant une action de l'opérateur
Comme dans tous les langages, même si VBScript est très permissif à ce niveau, il est recommandé de déclarer toutes les variables utilisées dans le code.
Mais, contrairement aux langages Visual Basic 6 (VB6) ou Visual Basic for Application (VBA), en VBScript, le typage des variables se fait
au moment de l'assignation, et non pas lors de la déclaration.
Autrement dit, vous ne devez pas utiliser de déclaration Dim ... As ... , mais simplement Dim ...
Déclarations correctes :
Code vb : | Sélectionner tout |
1 2 3 4 | Dim i Dim MonText Dim toto, titi Dim arg1, arg2, arg3 |
Déclarations incorrectes :
Code vb : | Sélectionner tout |
1 2 | Dim i As Integer Dim MonText As String |
Code vb : | Sélectionner tout |
1 2 3 | MsgBox "Appuyer sur OK pour lancer la pause" Wscript.Sleep 2000 ' durée en ms .. 2000 => 2 s MsgBox "2 secondes Plus tard" |
La méthode Quit permet de mettre fin à un script immédiatement :
Code vb : | Sélectionner tout |
If MyVar = 0 Then WScript.Quit
Affiche le nom et chemin complet du script en cours d'exécution :
Code vb : | Sélectionner tout |
MsgBox WScript.ScriptFullName
Affiche le nom du script en cours d'exécution :
Code vb : | Sélectionner tout |
MsgBox WScript.ScriptName
Grâce à l'objet WshArguments ..
créer un fichier msgbox.vbs code :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 | If wscript.Arguments.length = 2 Then MsgBox wscript.arguments(0),wscript.arguments(1), "FaqVbs" Else wscript.Echo "Nombre d'arguments incorrect" Wscript.Echo "MsgBox Message iType" End if |
Code vb : | Sélectionner tout |
MsgBox "Bonjour à tous " 48
Avec la méthode BrowseForFolder de l'objet Shell.Application :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Const RETURNONLYFSDIRS = &H1 Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\") If oFolder is Nothing Then MsgBox "Abandon opérateur",vbCritical Else Set oFolderItem = oFolder.Self MsgBox oFolderItem.path End If Set oFolderItem = Nothing Set oFolder = Nothing Set oShell = Nothing |
Quelques compléments intéressants à cette fonction :
Supprimer le bouton "Créer un nouveau dossier" :
Code vb : | Sélectionner tout |
1 2 3 4 | Const RETURNONLYFSDIRS = &H1 Const NONEWFOLDERBUTTON = &H200 Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON, "c:\") |
Ajouter un label d'aide en ligne :
Code vb : | Sélectionner tout |
1 2 3 4 5 | Const RETURNONLYFSDIRS = &H1 Const NONEWFOLDERBUTTON = &H200 Const UAHINT = &H100 Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON + UAHINT, "c:\") |
En utilisant la classe SAFRCFileDlg.FileOpen découlant de Safrcdlg.dll:
Code vb : | Sélectionner tout |
1 2 3 4 5 | Set objDialog=CreateObject("SAFRCFileDlg.FileOpen") ObjDialog.OpenFileOpenDlg strFileName=objDialog.FileName Wscript.Echo strFileName Set objDialog=Nothing |
ou en utilisant la classe UserAccounts.CommonDialog ou encore UserAccounts.CommonDialog.1 découlant toutes les deux de NUSRMGR.CPL:
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 | Set oDlg=CreateObject("UserAccounts.CommonDialog.1") oDlg.Filter="Tous les fichiers(*.*)|*.*|Fichier text(*.txt)|*.txt" oDlg.FilterIndex=2 oDlg.InitialDir="C:\" oDlg.ShowOpen Wscript.echo oDlg.filename set oDlg= nothing |
Il est à noter que ces deux méthodes fonctionnent sous Windows XP mais pas sous Vista ni Windows 7(testé),sauf si on ajoute l'une et/ou l'autre bibliothèque à son système et qu'on l'inscrive dans la base du registre Windows(Win7 après un nouveau test).
Code vb : | Sélectionner tout |
1 2 3 4 | Function GetFileNameDlg() GetFileNameDlg=CreateObject("WScript.Shell").Exec("mshta.exe ""about:<input type=file id=f><script language=""VBScript"">f.click():CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).WriteLine(f.value):close()</script>""").StdOut.ReadAll End Function MsgBox GetFileNameDlg() |
Code vb : | Sélectionner tout |
1 2 3 4 5 | Function GetFileDlgEx(sIniDir,sFilter,sTitle) Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""") oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';" GetFileDlgEx = oDlg.StdOut.ReadAll End Function |
NOTES : le paramètre sIniDir doit respecter la syntaxe javascript (la barre oblique inverse doit être doublée). Il définit également le premier filtre actif et doit respecter une syntaxe particulière (l'extension pour être reconnue doit être précédée d'un astérisque).
Exemple :
Code vb : | Sélectionner tout |
1 2 3 4 5 | sIniDir = "C:\Windows\*.*pdf" sFilter = "Adobe pdf (*.pdf)|*.pdf|All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Image files (*.gif;*.png;*jpg;*.bmp)|*.gif;*.png;*jpg;*.bmp|Html files (*.htm;*.html;*.mht)|*.htm;*.html;*.mht|" sTitle = "GetFileDlg by omen999 2014 - http://omen999.developpez.com" rep = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle) MsgBox rep & vbcrlf & Len(rep) |
Popup(strText,[nSecondsToWait],[strTitle],[nType])
Les types disponibles sont :
Constante | Valeur | Description |
vbOKOnly | 0 | Affiche le bouton OK. |
vbOKCancel | 1 | Affiche les boutons OK et Annuler. |
vbAbortRetryIgnore | 2 | Affiche les boutons Terminer, Réessayer et Ignorer. |
vbYesNoCancel | 3 | Affiche les boutons Oui, Non et Annuler. |
vbYesNo | 4 | Affiche les boutons Oui et Non. |
vbRetryCancel | 5 | Affiche les boutons Réessayer et Annuler. |
on peut ajouter au type de bouton le type d'icône souhaité :
Valeur | Type d'icône |
16 | Affiche l'icône Stop. |
32 | Affiche l'icône Point d'interrogation. |
48 | Affiche l'icône Point d'exclamation. |
64 | Affiche l'icône Informations. |
Code vb : | Sélectionner tout |
1 2 3 | Set oShell = WScript.CreateObject("WScript.Shell") iRet = oShell.Popup ("Bonjour le monde ",10,"10s avant clic sur OK",vbOKCancel+16) Wscript.Echo iRet |
la fonction renvoie :
Valeur | Description |
-1 | Pas de réponse |
1 | OK |
2 | Annuler |
3 | Abandonner |
4 | Réessayer |
5 | Ignorer |
6 | Oui |
7 | Non |
en lecture :
Code vb : | Sélectionner tout |
sClipValue = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
en écriture (compatible Vista et supérieur)
Code vb : | Sélectionner tout |
CreateObject("WScript.Shell").Exec("clip.exe").StdIn.Write sClipValue
pour éviter le clignotement de l'écran, une variante :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | ' pas de code exécuté avant cette ligne Set oShell = CreateObject("WScript.Shell") If InStr(1,WScript.FullName,"WScript.exe",vbTextCompare) > 0 Then For Each Arg In WScript.Arguments If InStr( Arg, " " ) Then Arg = """" & Arg & """" sArgs = sArgs & " " & Arg Next oShell.Run "cscript.exe """ & WScript.ScriptFullName & """ " & sArgs,0,False WScript.Quit End If sClipValue="Hello world" oShell.Exec("clip.exe").StdIn.Write sClipValue MsgBox WScript.Arguments.Count |
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 © 2025 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.