IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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.

SommaireVB ScriptGénéralités VBScript (13)
précédent sommaire suivant
 

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

Mis à jour le 28 février 2007 ThierryAIM

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

Mis à jour le 27 février 2014 SfJ5Rpw8


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

Mis à jour le 2 mars 2014 ThierryAIM

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"

Mis à jour le 28 février 2007 SfJ5Rpw8

La méthode Quit permet de mettre fin à un script immédiatement :

Code vb : Sélectionner tout
If MyVar = 0 Then WScript.Quit

Mis à jour le 28 février 2007

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

Mis à jour le 28 février 2007 ThierryAIM

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
puis pour l'appel du code exécuter en ligne de commande :

Code vb : Sélectionner tout
MsgBox "Bonjour à tous " 48

Mis à jour le 28 février 2007 SfJ5Rpw8

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:\")

Mis à jour le 28 février 2007 SfJ5Rpw8 ThierryAIM

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).

Mis à jour le 15 novembre 2010 l_autodidacte

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()

Mis à jour le 9 mars 2014 omen999

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)

Mis à jour le 20 mai 2014 omen999

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


Mis à jour le 2 mars 2014 omen999 SfJ5Rpw8

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

Mis à jour le 14 février 2018 omen999

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.