VBA : lancer une ligne de commande
Fermé
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
-
15 févr. 2020 à 11:26
f894009 Messages postés 17181 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 mars 2024 - 22 févr. 2020 à 06:54
f894009 Messages postés 17181 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 mars 2024 - 22 févr. 2020 à 06:54
A voir également:
- Cmd vba
- Cmd - Guide
- Récupérer sa clé windows 10 cmd - Guide
- Fichier .cmd - Guide
- Scannow cmd - Guide
- Cmd mac - Guide
11 réponses
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 16 févr. 2020 à 07:59
Modifié le 16 févr. 2020 à 07:59
Bonjour,
Entre autres sites.
A voir: https://www.easy-micro.org/shell-vba.php&id=401 surtout pour les double cotes (")
Entre autres sites.
A voir: https://www.easy-micro.org/shell-vba.php&id=401 surtout pour les double cotes (")
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
17 févr. 2020 à 08:25
17 févr. 2020 à 08:25
Merci beaucoup. J'ai regardé et essayé mais cela ne fonctionne toujours pas.
Voici le code que j'ai saisi :
Voici le code que j'ai saisi :
Sub test() Dim appli As String Dim fichier As String appli = "C:\apng2gif.exe" fichier = DOSSIER_LOGOS & "toto.png" 'DOSSIER_LOGOS est une fonction qui retourne 'le chemin du dossier (en String), ce chemin 'contient des espaces Shell "C:\WINDOWS\system32\cmd.exe " & appli & " " & """ & fichier & """, vbMinimizedNoFocus End Sub
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 17 févr. 2020 à 17:56
Modifié le 17 févr. 2020 à 17:56
Bonjour,
cela ne fonctionne toujours pas
Veux rien dire, que se passe-t-il ou pas. Un message d'erreur?
Mettez un point d'arret sur la ligne Shell
Lancez le code, passez le curseur souris sur DOSSIER_LOGOS pour voir le contenu
Manque peut-être un \ devant Toto.png
A voir:
Manquerait deux " devant "C: et un apres fichier
exemple:
Shell """C:\Program Files (x86)\Nuance\PDF Professional 8\bin\GaaihoDoc.exe"" """ & path1 & """", vbNormalFocus
cela ne fonctionne toujours pas
Veux rien dire, que se passe-t-il ou pas. Un message d'erreur?
Mettez un point d'arret sur la ligne Shell
Lancez le code, passez le curseur souris sur DOSSIER_LOGOS pour voir le contenu
Manque peut-être un \ devant Toto.png
A voir:
Manquerait deux " devant "C: et un apres fichier
exemple:
Shell """C:\Program Files (x86)\Nuance\PDF Professional 8\bin\GaaihoDoc.exe"" """ & path1 & """", vbNormalFocus
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
17 févr. 2020 à 18:42
17 févr. 2020 à 18:42
La console se lance, mais, elle est vide. Elle affiche juste un positionnement sur le dossier document et c'est tout.
J'ai essayé de placer les doubles quotes exactement comme dans votre exemple, mais cela réagit exactement de la même façon.
La fonction DOSSIER_LOGOS renvoi le chemin avec un \ à la fin.
Je comprends pas ce qui cloche.
J'ai essayé de placer les doubles quotes exactement comme dans votre exemple, mais cela réagit exactement de la même façon.
La fonction DOSSIER_LOGOS renvoi le chemin avec un \ à la fin.
Je comprends pas ce qui cloche.
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 18 févr. 2020 à 07:00
Modifié le 18 févr. 2020 à 07:00
Bonjour,
DOSSIER_LOGOS
Ca sort d'ou cette chose ?
Passez le curseur souris sur fichier
DOSSIER_LOGOS
Ca sort d'ou cette chose ?
Passez le curseur souris sur fichier
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
Modifié le 18 févr. 2020 à 08:29
Modifié le 18 févr. 2020 à 08:29
Comme je l'avait dit, cette fonction retourne un String qui est le chemin d'un dossier.
Cette fonction retourne :
Quand je passe la souris en mode déboggage, elle me retourne bien ceci. D'ailleurs, j'ai également testé de mettre une
Donc je suis sûr que le problème ne vient pas de là. Les dossiers "Images" et "Logos" sont écris sans faute (via copier/coller pour être sûr)
Cette fonction retourne :
Function DOSSIER_LOGOS() as String DOSSIER_LOGOS = ThisWorkbook.Path & "\Images\Logos\" End Function
Quand je passe la souris en mode déboggage, elle me retourne bien ceci. D'ailleurs, j'ai également testé de mettre une
MsgBox DOSSIER_LOGOSdans une procédure test, et elle me m'affiche le chemin correctement.
Donc je suis sûr que le problème ne vient pas de là. Les dossiers "Images" et "Logos" sont écris sans faute (via copier/coller pour être sûr)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
18 févr. 2020 à 08:27
18 févr. 2020 à 08:27
Bonjour,
pour lancer une appli en 64bits voir ceci:
http://www.office-loesung.de/ftopic619862_0_0_asc.php
pour lancer une appli en 64bits voir ceci:
http://www.office-loesung.de/ftopic619862_0_0_asc.php
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 18 févr. 2020 à 12:22
Modifié le 18 févr. 2020 à 12:22
Bonjour a vous deux,
Je lance l'appli avec une commande shell simple et ca marche. Par contre la fenetre de l'appli s'ouvre et dois faire click sur convertir
Avec d'autre commandes dont celle du site donnee par cs_Le Pivert, ouverture fenetre appli aussi...
Je lance l'appli avec une commande shell simple et ca marche. Par contre la fenetre de l'appli s'ouvre et dois faire click sur convertir
Avec d'autre commandes dont celle du site donnee par cs_Le Pivert, ouverture fenetre appli aussi...
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
18 févr. 2020 à 14:53
18 févr. 2020 à 14:53
Merci beaucoup à tous les deux ! La méthode fournie par cs_Le Pivert, fonctionne. Et pour moi, je ne suis pas obligé de cliquer dans la console. Nickel ! J'ai fait le test en tapant la commande en dur. Reste plus qu'à la générer avec des variables et ça sera bon.
Public Sub prcStartMSConfig64Cmd() Const WND_HIDE As Integer = 0 Dim objWshShell As Object Set objWshShell = CreateObject("WScript.Shell") objWshShell.Run "%windir%\Sysnative\cmd.exe " & _ "/C start c:\apng2gif.exe c:\toto.png", WND_HIDE, True 'j'ai modifié uniquement cette ligne Set objWshShell = Nothing End Sub
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
18 févr. 2020 à 16:03
18 févr. 2020 à 16:03
Re,
J'arrive a la meme chose avec ceci:
J'arrive a la meme chose avec ceci:
Shell "cmd /c start " & appli & " " & fichier & """", vbMinimizedFocus
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
>
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
18 févr. 2020 à 16:11
18 févr. 2020 à 16:11
Les grands esprits se rencontrent. Je viens de tester également ceci, et cela fonctionne aussi pour moi. il semblerai que ce qui me manquait était le
/c start. Je n'avais pas mis ça avant.
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
>
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
18 févr. 2020 à 18:07
18 févr. 2020 à 18:07
Re,
Non, ca marche sans, j'ai essaye avec pour voir la difference ..
ce qui me manquait était le /c start
Non, ca marche sans, j'ai essaye avec pour voir la difference ..
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
>
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
18 févr. 2020 à 22:42
18 févr. 2020 à 22:42
Pour moi ça ne fonctionnait pas sans. Je suis totalement largué. Je vais prendre quelques jours de repos et regarder ça à nouveau. Car là, je suis totalement à l'ouest. Je ne comprend pas. Mais c'est sûr que je suis passé à côté de quelque chose.
Surtout que même en remettant le
Merci beaucoup en tout cas pour cette aide et le temps passé ????
Surtout que même en remettant le
/c start, après avoir ressayé sans, cela ne fonctionnait plus, cela m'ouvrai directement le PNG. Donc c'est sûr que j'ai merdé quelque part, j'ai le cerveau qui n'arrivent plus à suivre là ????.. Je fais n'importe quoi.
Merci beaucoup en tout cas pour cette aide et le temps passé ????
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
>
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
Modifié le 19 févr. 2020 à 07:34
Modifié le 19 févr. 2020 à 07:34
Bonjour,
essayez en écrivant les valeurs appli et fichier dans la ligne de commande, avec start pour vous. Ca ne fera qu'une chaine simple entre cote
essayez en écrivant les valeurs appli et fichier dans la ligne de commande, avec start pour vous. Ca ne fera qu'une chaine simple entre cote
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
19 févr. 2020 à 11:02
19 févr. 2020 à 11:02
merci.
(PS : mes smiley ont été remplacés par des ??? du coup ça change le sens de la phrase lol)
Je vais faire une pause sur le VBA quelques jours. Et je reviendrai préciser mon (ou mes erreurs). Cela pourra être utile à d'autres ^_^
(PS : mes smiley ont été remplacés par des ??? du coup ça change le sens de la phrase lol)
Je vais faire une pause sur le VBA quelques jours. Et je reviendrai préciser mon (ou mes erreurs). Cela pourra être utile à d'autres ^_^
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
Modifié le 21 févr. 2020 à 15:27
Modifié le 21 févr. 2020 à 15:27
Bonjour,
Même après repos, je plane toujours autant. J'ai réalisé que le problème viens des doubles quotes.
lors de mes derniers tests, cela fonctionnait car pour la variable appli j'avais
Hors maintenant que je l'ai remplacé. Cela ne fonctionne plus.
La fonction DOSSIER_LOGOS renvoi un chemin qui contient des espaces.
(D:\99 - Système\Utilisateurs\Moi\Bureau\Dossier Appli\Images\Logos\)
Et le problème vient de là.
Je n'ai toujours pas compris comment placer mes doubles quotes.
En l'état, j'obtient un message d'erreur me disant que Windows ne trouve pas D:\99
Même après repos, je plane toujours autant. J'ai réalisé que le problème viens des doubles quotes.
Sub Test(Str_Fichier as String) 'Str_Fichier contient le chemin complet vers un fichier Dim appli As String Dim Fichier As String Dim commande As String appli = DOSSIER_LOGOS & "apng2gif.exe" Fichier = DOSSIER_LOGOS & Str_NomFichier commande = "cmd /C start " & appli & " " & Fichier Shell commande, vbMinimizedNoFocus End Sub
lors de mes derniers tests, cela fonctionnait car pour la variable appli j'avais
appli = "C:\apng2gif.exe"(un chemin sans espace).
Hors maintenant que je l'ai remplacé. Cela ne fonctionne plus.
La fonction DOSSIER_LOGOS renvoi un chemin qui contient des espaces.
(D:\99 - Système\Utilisateurs\Moi\Bureau\Dossier Appli\Images\Logos\)
Et le problème vient de là.
Je n'ai toujours pas compris comment placer mes doubles quotes.
En l'état, j'obtient un message d'erreur me disant que Windows ne trouve pas D:\99
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 21 févr. 2020 à 15:51
Modifié le 21 févr. 2020 à 15:51
Bonjour,
Sorti du sable!
Y a un truc, pourquoi D:, c'est plus C:?
dans votre code ajoutez cette ligne
apres commande=
mettez un point d'arret ligne Shell
Lancez le code
Faite afficher la fenetre d'execution pour voir le contenu de commande
Sorti du sable!
Y a un truc, pourquoi D:, c'est plus C:?
dans votre code ajoutez cette ligne
apres commande=
Debug.print commande
mettez un point d'arret ligne Shell
Lancez le code
Faite afficher la fenetre d'execution pour voir le contenu de commande
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
Modifié le 21 févr. 2020 à 16:36
Modifié le 21 févr. 2020 à 16:36
En fait j'avais mis C: pour tester, mais le chemin de Appli, devra suivre le dossier qui contient le fichier Excel.
Donc potentiellement D: et des chemins avec espaces. J'ai voulu tester comment ça réagirai.
Je pensais qu'il me suffirai de changer le contenu de ma variable Appli une fois trouvé la bonne commande. Mais j'avais tout faux.
J'ai fait pleins de tests dont debug.print.
avec
Debug.Print me donne :
et
J'ai des doubles quotes qui entourent mes chemins, mais par contre ça m'ouvre directement le fichier 58.png. Hors moi, je veux lancer ce fichier 58.png avec l'appli apng2gif.exe (Appli)
PS : mon bureau, ne se trouve pas sur C:, mais sur D:
Donc potentiellement D: et des chemins avec espaces. J'ai voulu tester comment ça réagirai.
Je pensais qu'il me suffirai de changer le contenu de ma variable Appli une fois trouvé la bonne commande. Mais j'avais tout faux.
J'ai fait pleins de tests dont debug.print.
avec
commande = "cmd /c start " & """" & appli & """" & " " & """" & Fichier & """" Debug.Print commande
Debug.Print me donne :
cmd /c start "D:\99 - Système\Utilisateurs\Moi\Bureau\Dossier Appli\Images\Logos\apng2gif.exe" "D:\99 - Système\Utilisateurs\Moi\Bureau\Dossier Appli\Images\Logos\58.png"
et
Shell commande, vbMinimizedNoFocus
J'ai des doubles quotes qui entourent mes chemins, mais par contre ça m'ouvre directement le fichier 58.png. Hors moi, je veux lancer ce fichier 58.png avec l'appli apng2gif.exe (Appli)
PS : mon bureau, ne se trouve pas sur C:, mais sur D:
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
Modifié le 21 févr. 2020 à 18:01
Modifié le 21 févr. 2020 à 18:01
Re,
Bizard.
Avant Appli=, mettez cette ligne
Chdir DOSSIER_LOGOS
Changer les affectation appli et fichier sans DOSSIER_LOGOS
pour vous positionner sur le repertoire de vos fichiers
Bizard.
Avant Appli=, mettez cette ligne
Chdir DOSSIER_LOGOS
Changer les affectation appli et fichier sans DOSSIER_LOGOS
pour vous positionner sur le repertoire de vos fichiers
sifusalade
Messages postés
135
Date d'inscription
samedi 21 janvier 2012
Statut
Membre
Dernière intervention
16 juillet 2021
7
21 févr. 2020 à 18:21
21 févr. 2020 à 18:21
MERCI BEAUCOUP !!!!! Cela fonctionne.
En fait à peine une minute avant de voir cette superbe réponse. Je me disait que c'était pas possible et j'avais résolu le truc en faisant une copie de "apng2gif.exe" dans "C:\TEMP\". Cela me permettait d'avoir un chemin sans espace pour Appli. Et ça m'obligeait à supprimer "C:\TEMP\apng2gif.exe" dans Workbook_BeforeClose.
Mais là, c'est beaucoup mieux. C'est vraiment ce que je voulais faire à la base.
Je ne suis pas du genre à demander de l'aide pour que les gens fassent le truc à ma place. Je cherche également à comprendre et apprendre.
Si je comprends bien, la ligne Chdir DOSSIER_LOGOS me positionne dans ce dossier dans la console c'est ça ? Et donc si c'est ça, et si je comprends bien, en étant positionné dedans, plus besoin de chemin absolu.
En fait à peine une minute avant de voir cette superbe réponse. Je me disait que c'était pas possible et j'avais résolu le truc en faisant une copie de "apng2gif.exe" dans "C:\TEMP\". Cela me permettait d'avoir un chemin sans espace pour Appli. Et ça m'obligeait à supprimer "C:\TEMP\apng2gif.exe" dans Workbook_BeforeClose.
Mais là, c'est beaucoup mieux. C'est vraiment ce que je voulais faire à la base.
Je ne suis pas du genre à demander de l'aide pour que les gens fassent le truc à ma place. Je cherche également à comprendre et apprendre.
Si je comprends bien, la ligne Chdir DOSSIER_LOGOS me positionne dans ce dossier dans la console c'est ça ? Et donc si c'est ça, et si je comprends bien, en étant positionné dedans, plus besoin de chemin absolu.
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
22 févr. 2020 à 06:54
22 févr. 2020 à 06:54
Bonjour,
Bowie David.
Bowie David.