XL 2010 lancer .bat ou commande réseau ou autre idée ?

Potentis

XLDnaute Occasionnel
Bonjour le forum,

Selon vous, qu'est ce qui est le mieux (1° ou 2°) ?
1° dans une macro lancer un fichier.bat qui contient juste ceci :
@echo off
NET USE X: /Delete
NET USE X: \\image\photo
@echo on
si oui quel serait la bonne syntaxe de Shell suivi du chemin et nom de fichier.bat ?

2° en VBA y a t'il une commande pour faire un net use, j'avais trouvé quelque chose sur un site mais c'était en anglais et je n'ai pas bien compris si c'était un net use ou autre chose de mémoire ca ressemblait a WSquelquechose

si vous pouviez SVP argumenter et proposer du code, je débute en VBA et encore plus en réseau ^^

Merci d'avance
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Potentis

Pas besoin de vba. Etant un fichier .bat tu clique directement dessus.pour faire le test. Si fonctionnel, tu peux aller dans stratégie de groupe pour l'exécuter à la date voulue. Met pause à la place de echo off pour faire le test. En PJ, un exemple avec l'invite de commande. Clique sur le fichier pour voir.

Si c'est une image que tu veux afficher, il faut ajouter monimage.jpg
 

Pièces jointes

  • test.zip
    388 bytes · Affichages: 30
Dernière édition:

sousou

XLDnaute Barbatruc
Bonjour à tous
Si tu veux inclure dans un code vba la création de raccourcis tu peux essayer ceci:
Ici création d'un raccourci sur le bureau vers un dossier du même bureau
Sub deb()

Set WS = CreateObject("wscript.Shell")
'emplacement du raccourci
Set racc = WS.CreateShortcut("C:\Documents and Settings\HP_Propriétaire\Bureau" & "\diatonique.lnk")
'chemin du raccourci
racc.TargetPath = "C:\Documents and Settings\HP_Propriétaire\Bureau\diatonique"

racc.WindowStyle = 1
'touche raccourci
racc.Hotkey = "CTRL+SHIFT+F"
'appli associée
' racc.IconLocation = "notepad.exe, 0"
racc.Description = "Raccourci script"
racc.WorkingDirectory = strDesktop
racc.Save
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous

@ Potentis: si tu veux lancer une macro se trouvant dans un classeur

@echo off
start EXCEL.exe "C:\Toto\Tata\Titi\Classeur1.xls"
@echo on

VB:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Call 'Ta macro
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

En passant directement la commande dans le fichier bat. "test" est le nom de la macro

@echo off
start EXCEL.exe /cmd/test "C:\Users\TOTO\Desktop\Nouveau dossier\TEST.xls"
@echo on

Dans ThisWorkbook

VB:
Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, lpString2 As Any) As Long

Private Sub Workbook_Open()
Dim macmdline As Variant
Dim monparam As Variant 

    macmdline = GetCmd 'affecte la valeur de la ligne de commande
    If Not IsNull(macmdline) Then 'si la variable est nulle
        If Len(macmdline) > 0 Then 'on s'assure qu'il y a eu une ligne de commande passée
            If InStr(macmdline, "/cmd") > 0 Then
                macmdline = Replace(macmdline, ThisWorkbook.FullName, "", , , vbTextCompare)
                monparam = Split(macmdline, "/cmd")
                Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 3)
            End If
        End If
    End If
End Sub

Private Function GetCmd() As String
   Dim lpCmd As Long
   lpCmd = GetCommandLine()
   GetCmd = Space$(lstrlen(ByVal lpCmd))
   lstrcpy ByVal GetCmd, ByVal lpCmd
End Function
 

Potentis

XLDnaute Occasionnel
Bonjour Lone-wolf, Sousou, le forum,

Merci pour vos réponses, la façon pour créer un raccourci en vba et la façon de lancer une macro via un .bat pourra m'être utile et c'est toujours bon a savoir Merci, mais je pense avoir mal expliqué ce que je cherche

en fait, j'ai déjà une petite macro toute faite et fonctionnelle de sauvegarde de mon classeur sur différent support dont ce lecteur X: qui ne marchait pas, j'ai contacté mon admin réseau qui m'a conseillé de faire 1 fichier .bat avec 2 commandes que j'ai réécris tel qu'il me l'a donné c'est à dire :
@echo off
NET USE X: /Delete
NET USE X: \\image\photo (photo étant le dossier où je veux sauvegarder mon classeur)
@echo on

si je lance ce .bat depuis l'explorateur de fichier avant de lancer ma macro ça fonctionne impec, du coup j'ai pensé lancer depuis ma macro et j'ai trouvé la commande Shell dont je n'arrive pas a trouver la bonne syntaxe, a part Shell (Path,Fichier et des options que je ne comprends pas), ce qui fait parti de mon 1° et sinon en parallèle je me suis dis que j'aurai pu mettre l'équivalent de ces 2 commandes directement dans ma macro sans passer pas un fichier .bat d'où ma recherche qui ressemblait a WS.....

je ne sais pas a quoi sert la commande net use x: (je ne me suis pas encore penché la dessus) mais il m'a dit que c'est du réseau, ni pourquoi il m'a dit de lancer ce .bat avant ma macro mais ça a l'air de fonctionner car je peux faire ma sauvegarde sur ce lecteur réseau qui semble avoir une particularité car j'ai un autre lecteur réseau que j'arrive a sauvegarder mon classeur directement dessus sans ce .bat

désolée si je suis un peu brouillon
 

Potentis

XLDnaute Occasionnel
Re bonjour

j'ai un peu avancé, je viens de trouver ce code qui fonctionne
Code:
Shell "cmd.exe /c cd " & ThisWorkbook.Path & " && reseau.bat"

je continue a chercher le code vba pour remplacer ces commandes réseaux du fichier.bat
mais j'ignore quelle est la meilleure méthode

bonne soirée
 

Discussions similaires