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 ScriptApplications Externes (9)
précédent sommaire suivant
 

Il faut utiliser un objet Excel.Application

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Dim xlapp, classeur, feuille 
Set xlapp = CreateObject("Excel.Application") 
xlapp.Visible = True 
Set classeur = xlapp.Workbooks.add 
Set feuille = xlapp.ActiveSheet 
feuille.Range("A1") = "Rajout du texte en cellule A1" 
Classeur.Saveas "c:\tmp\MonClasseur" 
classeur.Close True 'quitte en sauvant 
xlApp.quit 
Set classeur = Nothing 
Set xlapp = Nothing

Mis à jour le 28 février 2007 SfJ5Rpw8

Avec l'objet InternetExplorer.Application

Exemple pour la connexion au forum développez.com

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim IE 
Set IE = Wscript.CreateObject("InternetExplorer.Application") 
IE.Visible = 1  
IE.navigate "http://www.developpez.net/forums/login.php" 
Do While (IE.Busy) 
    WScript.Sleep 10 
Loop 
Set Helem = IE.document.getElementById("vb_login_username") 
Helem.Value = "NomUtilisateur" 
Set Helem = IE.document.getElementById("vb_login_password") 
Helem.Value = "MotDePasse" 
Set Helem = IE.document.Forms(0) 
Helem.Submit

Mis à jour le 28 février 2007 SfJ5Rpw8

Pour retourner à l'écran d'accueil de Windows XP (où Vista) de la même façon que lors de l'action simultanée sur
les touches Windows et L, on peut faire un appel à la fonction LockWorkStation de User32.dll grâce à "l'utilitaire" rundll32.exe, ce qui donne:

Code vb : Sélectionner tout
1
2
Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "rundll32.exe user32.dll,LockWorkStation"

Mis à jour le 5 mai 2008 SfJ5Rpw8

En utilisant la propriété Name de la classe FolderItemVerbs découlant de Shell.Application

' Il est utile de connaître ces actions si on veut manipuler un fichier par exemple : "Ouvrir" (Open par défaut),"Copier, coller, Imprimer, supprimer ... et ce en utilisant la méthode InvokVerb ou InvokVerbEx

Code vb : Sélectionner tout
1
2
3
4
5
6
7
Set oShell = CreateObject("Shell.Application") 
Set oFolder = oShell.NameSpace("c:\tmp") 
Set oFolderItem = oFolder.ParseName("microsoft.jpg") 
  
For Each oVerb In oFolderItem.Verbs 
    If oVerb<>"" Then WScript.Echo oVerb 
Next

Mis à jour le 15 novembre 2010 l_autodidacte

En utilisant un appel à Shell.Application :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
Set objShell = CreateObject("Shell.Application")  'Référence à Shell32.dll  
 Set objFolder = objShell.Namespace("c:\temp\")  
 Set colItems = objFolder.Items 
  For Each objItem in colItems 
    If Ucase(Right(ObjItem.Name,4))=".PDF" then 
       objItem.InvokeVerbEx("Print") 
    End If 
  Next


Bien entendu cela impose la présence d'une application (Acrobat Reader...) gérant les .pdf.

Mis à jour le 15 novembre 2010 l_autodidacte

En utilisant la propriété Arguments de WScript et Regsvr32.exe.
Il est à noter qu'il faut enregistrer le code suivant dans un fichier (RegOcxDll.vbs par exemple), fermer le fichier puis faire un glisser/déposer du(des) fichier(s)(DLL ou OCX) à inscrire dans la base du registre Windows sur l'icône du fichier vbs qu'on vient de créer.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit 
 Dim fso, WS, CM, Fich, Ind 
  
 Set fso = CreateObject("Scripting.FileSystemObject") 
 Set WS = CreateObject("Wscript.Shell") 
  For Ind = 0 To Wscript.Arguments.Count - 1 
     Fich = fso.GetFile(Wscript.Arguments(Ind)).ShortPath 
     If Ucase(Right(Fich,4)) = ".OCX" Or Ucase(Right(Fich,4)) = ".DLL" Then 
       cm = "Regsvr32.exe " & Fich 
       WS.Run CM,0,False 
     Else 
       MsgBox "Ce type de fichier [" & UCase(fso.GetFile(Wscript.Arguments(Ind)).Name) _ 
           & "] n'est pas pris en charge !", VbInformation 
     End If 
  Next
Nota : Pour ne par recevoir l'information sur l'enregistrement du fichier dans la BDR, la variable CM devient CM = "Regsvr32.exe /s " & Fich. Ce qui est déconseillé si on veut savoir si l'opération a réussi ou non.
Pour désinscrire un ou plusieurs fichiers la ligne CM = "Regsvr32.exe " & Fich devient CM = "Regsvr32.exe /u " & Fich.

Mis à jour le 12 mars 2014 l_autodidacte

D'habitude, l'icône du fichier hta est déclarée dans l'en-tête(entre les balises <HEAD> </HEAD>; et là on doit renseigner l'entrée ICON="Chemin_du_fichier.ico" par exemple. Mais il suffit de changer le nom ou l'emplacement du fichier et on n'a plus d'icône.
L'astuce pour une icône permanente est :
1 - Créer le fichier HTA le plus simple tel que

Code HTML : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
<HTML> 
<HEAD> 
   <SCRIPT> 
       document.write( 
       '<HTA:APPLICATION ID="objHTAwithIco" APPLICATIONNAME="MyFirstApp" ICON="#">'); 
   </SCRIPT> 
</HEAD> 
<BODY SCROLL="no"> 
  <font style="color:red;font-size:26;"> 
  <b><i> AVEZ-VOUS REMARQUÉ L'ICÔNE DE LA BARRE DE TITRES ?</i></b> 
  </font> 
</BODY> 
</HTML>
2 - Enregistrer le fichier sous Exemple.hta
3 - Placer un fichier icône par exemple hta.ico dans le même dossier que le fichier hta créé.
4 - Créer un fichier texte contenant
Code : Sélectionner tout
Copy /B hta.ico /B +Exemple.hta Resultat.hta /B
L'enregistrer avec l'extension bat et l'exécuter.
5 - Lancer ensuite le fichier produit(Resultat.hta) et là on voit l'icône dans la barre de titres.
On peut utiliser directement cdm.exe en se plaçant dans le dossier contenant les fichiers sources.
Remarque importante : L'ordre de copie est très important => L'icône d'abord le fichier hta ensuite.

Mis à jour le 23 mars 2014 l_autodidacte

Une boucle infinie(tant que le PC tourne ou la session n'est pas fermée) ferait l'affaire

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit  
  
  Dim Fich, tm, OK, XL, wb, Interval 
  Fich = "C:\MonFichier.xlsm" 
  Interval = "n" ' n pour minute, h pour heure, s pour seconde, d pour jour .... 
  Duree = 1 ' Mettre ici la valeur voulue 
  tm = Minute(Now) ' remplacer Minute(Now) dans tout le code par Hour(Now)  pour les heures 
 Do  
   OK = Abs(DateDiff(Interval, tm, Minute(Now))) >= Duree 
   If OK Then  
      Set XL = CreateObject("Excel.Application") 
      XL.DisplayAlerts = False 
      XL.Visible  = True 
      Set wb = XL.Workbooks.Open(Fich) 
      tm = tm + 1  
   End If	  
 Loop

Mis à jour le 18 août 2016 l_autodidacte

Le lien du bouton Accepter n'étant pas correctement redirigé, je répond alors à la demande comme s'il s'agissait d'une autre entrée dans la FAQ VBScript :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
' Il faut initialiser Excel, définir les objets à utiliser et ouvrir 
' le fichier à traiter. 
' Certains éléments ne sont disponibles que par affectation. 
' Les objets créés seront disponibles dans chaque Sub. 
  
Set oXL = CreateObject("Excel.Application") 
oXL.Visible = True 
Set wBook = oXl.Workbooks.Open("C:\Src.xls") 
Set Sheets = wBook.Sheets 
Set Worksheets = wBook.Worksheets 
Set Sel = oXL.Selection ' ou bien utiliser directement "oXL.Selection" comme dans 
                        ' la Sub "Combine" 
  
'============================ 
Sub Multiplie() 
  Dim I, J, Tablo, DerLigne 
  Sheets("feuil2").Cells.ClearContents 
  With Sheets("Feuil1") 
	.Range("A1:IV1").Copy Sheets("Feuil2").Range("A1") 
	DerLigne = 2 
	For I = 2 To .Range("C65536").End(xlUp).Row 
		Tablo = Split(.Range("C" & I).Value, ";") 
		For J = LBound(Tablo) To UBound(Tablo) 
			.Range("A" & I & ":IV" & I).Copy Sheets("Feuil2").Range("A" & DerLigne) 
			Sheets("Feuil2").Range("C" & DerLigne).Value = Tablo(J) 
			DerLigne = DerLigne + 1 
		Next 'J 
	Next 'I 
  End With 
End Sub 
'============================ 
Sub supAlias() 
  Worksheets("Feuil1").Range("C2:C65536").ClearContents 
End Sub 
'============================ 
Sub Combine() 
   Dim J 'As Integer 
   On Error Resume Next 
   Sheets(1).Select 
   Worksheets.Add 
   Sheets(1).Name = "Feuil1" 
   Sheets(2).Activate 
   Sheets(2).Range("A1").EntireRow.Select  ' Ajout de "Sheets(2)." 
   oXL.Selection.Copy Sheets(1).Range("A1") 
   For J = 2 To Sheets.Count 
	  Sheets(J).Activate 
      Sheets(J).Range("A1").Select  ' Ajout de "Sheets(J)." 
	  oXL.Selection.CurrentRegion.Select 
      oXL.Selection.Offset(1, 0).Resize(oXL.Selection.Rows.Count - 1).Select 
      oXL.Selection.Copy Sheets(1).Range("A65536").End(xlUp)(2) 
   Next 
End Sub 
'=============================== 
Sub ExtractionLiensHypertextes() 
   Dim Rng 'As Range 
   On Error Resume Next 
   For Each Rng In Worksheets("Feuil3").Range("I1:I" & Range("I65536").End(xlUp).Row) 
      Rng.Offset(0, 1) = Rng.Hyperlinks(1).Address 
   Next 'Rng 
End Sub 
'================================ 
Sub supprimecolonne() 
    Worksheets("Feuil1").Columns("D:F").Delete 
    Worksheets("Feuil1").Columns("J:J").Delete 
End Sub
Remarque : Le fichier original n'étant pas disponible, j'ai dû en utiliser un autre pour le test. Il y aura peut-être des messages d'erreur auxquels je ne peut rien tant que ledit fichier n'est pas à ma disposition.

Mis à jour le 2 mars 2019 l_autodidacte

En réponse à la proposition VBA to VBS

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.