[VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Staple1600

XLDnaute Barbatruc
Bonjour à tous

PREAMBULE: ce fil est liè a celui-ci:
Firefox 3 -places.sqlite

Je suis coincé à ce niveau:
La macro suivante crée le batch et le lance (ça c'est OK)

Code:
Sub cree_bat()
Open "c:\temp\Ftest.bat" For Output As #1
Print #1, "cd\"
Print #1, "cd c:\sqlite3"
Print #1, "sqlite3 places.sqlite"
Print #1, ".dump txt"
Print #1, ".output test.txt"
Print #1, "select url,title from moz_places;"
Print #1, ".exit"
Close #1
Shell "c:\temp\Ftest.bat", vbNormalFocus
End Sub
Sauf que le batch lui ne fonctionne pas

Je cherche un moyen par VBA, d'envoyer les instructions (contenues dans le batch) dans l'invite MSDos et de simuler à chaque fin de chaine l'appui sur la touche ENTER.

Les instructions quand on les passe manuellement à partir de l'invite MSDos , une par une et qu'on appuie sur ENTER fonctionne.

Avez-vous une idée sur la façon de s 'y prendre ?
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

bonjour à tous

Jean Marie, ton programme m'a l'air assez complexe. Es tu sur que c'est primordial de le faire? (même si je ne comprend pas bien le fond de la chose, vu que cela se passe sur pas mal de posts et qu'on s'y perd vite).

Sinon c'est quoi le but du jeu😕.
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re, bonsoir à tous

Merci Hasco, je vais essayer de voir comment utiliser GetTickCount


[MJ13]
•1) Ce fil est relatif à l'envoi de commandes dans l'invite MSDos à partir de VBA
•2) Cette question s'est posée à moi en cherchant comment importer le fichier places.sqlite (historique de navigation de de Firefox 3) dans une feuille Excel.
( cf. comme dit dans mon premier message de ce fil)
•3) Un de mes défauts (ou qualité c'est selon) c'est la curiosité, donc bien qu'ayant désormais 3 solutions opérationnelles (Merci BrunoM45, Hasco , RENAUDER et tous les autres ), je suis friand d'autres modes opératoires pour résoudre un problème donné en VBA.
•Bref, à mon sens, bien que liés , ces deux fils ne font pas doublons
car deux questions différentes y ont été posées.
[/MJ13]
 
Dernière édition:
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Hello Michel

Michel à dit:
Sinon c'est quoi le but du jeu?

Pour moi:
Le fun, le plaisir de découvrir de nouvelles choses (sqlite), de la programation et autre prises de tête, tellement agréables.

Et notre ami, JM ne manque pas d'imagination pour nous stimuler le neurone.

A++
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re

Ok Merci pour ces précisons, mais je n'ai toujours pas compris.
Tu ne pourrais pas nous mettre un fichier exemple en txt pour voir de quoi il ressort (il doit y être avant mais, bon j'ai pas eu le courage de tout parcourir) ou sinon sur quel post je peux le trouver.

Remarque en ce moment je fait aussi du batch.
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re


Voici le script VBA actuel (si ça peut servir à d'autres forumeurs)

(Évidemment adapter au préalable nom des des répertoires, nom de fichier
et avoir installer sqlite3.exe)

(temps d'attente 1/2 seconde )

Code:
[FONT=Courier New][COLOR=darkblue]Option[/COLOR] [COLOR=darkblue]Explicit[/COLOR]
[COLOR=green]'API declaration to suspend operation[/COLOR]
[COLOR=green]'for a specified time (Milliseconds)[/COLOR]
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Declare[/COLOR] [COLOR=darkblue]Sub[/COLOR] Sleep _
    [COLOR=darkblue]Lib[/COLOR] "kernel32" _
    ([COLOR=darkblue]ByVal[/COLOR] dwMilliseconds [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR])

[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Sub[/COLOR] wWait(tSecs [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Single[/COLOR])
[COLOR=green]' Timer to create a pause[/COLOR]
[COLOR=green]' auteur: Joost Verdaasdonk[/COLOR]
[COLOR=darkblue]Dim[/COLOR] sngSec [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Single[/COLOR]
sngSec = Timer + tSecs
[COLOR=darkblue]Do[/COLOR] [COLOR=darkblue]While[/COLOR] Timer < sngSec
DoEvents
[COLOR=darkblue]Loop[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]

[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Sub[/COLOR] Test_OK()
[COLOR=darkblue]Dim[/COLOR] id [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Variant[/COLOR]
id = Shell("cmd", vbNormalFocus)
Application.Wait Time + TimeSerial(0, 0, 2)
AppActivate id [COLOR=green]'Active la fenêtre dos[/COLOR]
SendKeys "cd c:\sqlite3", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "sqlite3 places.sqlite", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys ".dump txt", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys ".output hhhhtest.txt"
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
SendKeys "select url,title from moz_places;": wWait 0.5
SendKeys "~", True: SendKeys ".q", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", True
SendKeys "exit", True: wWait 0.5: SendKeys "~", True
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR][/FONT]
MJ13: tu utilises FireFox 3.04 ?
Si oui tu as dans ton profil un fichier places.sqlite

Je l'invite à lire ces messages avant de poursuivre plus avant
Lien supprimé
Lien supprimé
Lien supprimé
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Hello JM,

As-tu rencontrer des problèmes avec Sleep pour privilégier wWait 0.5 plutôt que sleep 500 (moins gourmand en ressource)?

A+
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re


Hasco
J'ai pas testé avec Sleep 😱

J'y retourne de ce pas 🙄

EDITION
Pour utiliser Sleep
remplacer
wWait 0.5
par
Sleep 500&

PS: j'ai tester avec Sleep 250& cela fonctionne toujours.
 
Dernière édition:
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir à tous

En faisant le ménage , je suis tombé sur ces essais
que j'ai voulu réexplorer ces jours-ci

Je tombe sur un nouveau problème auquel je n'avais pas pensé.

Avec ce script VBS (que l'on aussi en l'adaptant lancé d'Excel)
Code:
Dim o
Set o = WScript.CreateObject("WScript.Shell")
o.Run "cmd.exe /k"
WScript.Sleep 100
o.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 13
o.SendKeys "sqlite3 places.sqlite {ENTER}"
WScript.Sleep 13
o.SendKeys ".dump text {ENTER}"
WScript.Sleep 13
o.SendKeys ".output temp.txt {ENTER}"
WScript.Sleep 13
Set o = Nothing
Je ne sais pas comment envoyer correctement le caractère %
car la suite de ce script devrait être :
Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "%excel-downloads.com%" ORDER by visit_date;
j'ai esssayé ainsi : avec Chr(34) et Chr(37)
Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "  chr(34) & chr(37) & "excel-downloads.com" & chr(37) & chr(34) & " ORDER by visit_date;
mais cela ne fonctionne pas

Le seul biais que j'ai trouvé, c'est de copier/coller la chaine dans l'invite Msdos puis de taper ENTER et la cela fonctionne .

Mais comment faire pour que le script se poursuive sans mon intervention manuelle ?

Merci à tous ceux qui passeront par ici.

PS: ce fil est le fil enfant de cet autre fil, il peut être utile pour comprendre la finalité de la chose.
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir MJ13

Merci de ton aide


Malheureusement cela ne fonctionne pas


Alors je cherche le code VBA pour copier le contenu de clipboard dans l'invite MSDOS en attendant mieux 😱
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re JM


Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "%excel-downloads.com%" ORDER by visit_date;

Quand je vois cela, cela me rappelle plus du SQL.

Encore une fois avec un fichier Txt exemple et ce que tu veux filtrer, ce serait sans doute plus simple pour t'aider (je n'ai pas Firefox).
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir à tous, bonsoir MJ13

Le problème vient du fait que :
Le signe % identifie ALT (voir l'Aide Excel de SendKeys)

Mon problème est de l'ordre du "peaufinage" car les solutions présentes dans ce fil fonctionnent.

Le dernier problème qui persiste est cet histoire de %.

J'ai beau chercher sur le net , je n'ai pas trouver de code pour coller le contenu du clipboard dans une invite MSDOS..

(Si quelqu'un a une idée...)

C'est une syntaxe sql qui s'utilise avec sqlite3.exe
(voir URL plus bas dans le fil)

Pour un exemple de fichier voir Lien supprimé de celui-ci
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour JM

Le signe % identifie ALT (voir l'Aide Excel de SendKeys)
Si c'est pour écrire en syntaxe SQL, % signifie: remplacer n'importe quelle suite de caractères (je l'utilise souvent).

J'ai beau chercher sur le net , je n'ai pas trouver de code pour coller le contenu du clipboard dans une invite MSDOS..

Quand je n'ai pas de solution simple, j'utilise super macro (tape super macro sur le net), mais il faut un peu de temps pour l'apprivoiser, quoique c'est très performant et cela permet de faire des automatisations entres différentes applications qui n'auraient pas le même language de programmation.
 
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour MJ3, le fil, le forum

Si c'est pour écrire en syntaxe SQL, % signifie: remplacer n'importe quelle suite de caractères (je l'utilise souvent).

Je sais cela.

Mais le problème c'est dans VBA , Sendkeys + % est interprété comme
"appui sur la touche ALT"

Donc je vois pas comment envoyer le caractère % avec SendKeys sans que celui-ci ne soit considéré comme la touche ALT.

Je cherche toujours sans succès comment coller une chaine de caractères dans l'invite MSDOS.

Si quelqu'un passe par ici avec un solution. Merci à lui.

PS: Merci pour l'info sur SUPERMACRO , je testerai à l'occasion
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour