Lancer un shell et garder la main dans Excel

Fermé
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020 - Modifié le 28 août 2020 à 10:15
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 - 20 août 2020 à 16:37
Bonjour,
Je cherche à mettre à jour un fichier excel à son ouverture.
Je suis sur un serveur dolibarr, ou je gère une base de tarif d'articles, et j'ai un fichier Excel, qui récupère les tarifs. Or je n'ai pas réussi à me connecter à la base de données, donc j'ai créé un fichier php, sur mon site qui créé un fichier .csv dans mon répertoire téléchargement.
A l'ouverture de mon fichier excel, j'ouvre avec shell le fichier php via Chrome.
Le problème, c'est que je perds la main d'Excel, et donc ne peut plus continuer automatiquement ma macro.
Voici ma macro:
Sub Lance_Tarif()
    Dim navigate As String
    navigate = "https://le nom de mon site/excel.php"
    Shell "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe " & navigate, 0
    ..... la macro continue
End Sub


Si quelqu'un a des suggestions je suis preneur.
Merci d'avance.
Christophe
A voir également:

7 réponses

yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 Ambassadeur 1 552
11 août 2020 à 13:33
bonjour, veux-tu dire que la macro s'arrête en attendant que chrome se termine?
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
12 août 2020 à 09:05
Bonjour et merci de t'intéresser à ma question.
Non la macro continue, malheureusement, mais la fenêtre chrome devient active et le reste.
Je dis malheureusement, car j'aimerais que la macro attende la fin du processus de téléchargement du fichier .csv avant de continuer. J'ai mis une tempo Application.Wait (Now + TimeValue("0:00:09")), mais suivant la rapidité de la connexion, des fois ce n'est pas assez long.
Merci d'avance.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
12 août 2020 à 12:00
je suppose que ta macro va obtenir des données du ficher chargé, et que c'est pour cela que tu veux attendre. est-ce le cas?
peut-être est-il possible que la macro vérifie que le fichier est présent ou est récent avant de continuer?
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
13 août 2020 à 08:44
Oui effectivement, le fichier que je crée permet de récupérer des données.
Il est forcément absent avant de le créer, je le supprime à la fin de ma macro.
pour tester la présence, on fait un do while?
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
13 août 2020 à 09:15
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
Modifié le 28 août 2020 à 10:17
Merci pour ces infos, j'ai fait :
While Fs.FileExists("monfichier.txt") <> True
    Application.Wait (Now + TimeValue("0:00:01"))
Wend

ça à l'air de fonctionner.

Comme je l'expliquais dans mon premier message, ma macro ouvre chrome, pour télécharger le fichier. J'aimerais le faire en arrière plan, et garder la main sur Excel. Pour la définition du Shell je me suis aidé de cette page https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/shell-function
mais en mettant 0 ou 6 cela ne change rien...

Dim navigate As String
navigate = "https://le nom de mon site/excel.php"
Shell "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe " & navigate, 0
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
15 août 2020 à 21:11
que veux-tu dire par "garder la main"? veux-tu qu"Excel soit en avant-plan?
je pense que c'est chrome qui passe lui-même en avant plan, même si il est démarré sans l'être.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
16 août 2020 à 10:05
Oui c'est parfaitement ça. Du coup c'est possible?
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
16 août 2020 à 12:01
je ne pense pas qu'on puisse demander à chrome de rester discret.
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
19 août 2020 à 16:25
Effectivement ça semble compliqué, Merci pour ton coup de main.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552 > pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
19 août 2020 à 16:28
peux-tu alors marquer la discussion comme résolue?
0
Chris_33000 Messages postés 523 Date d'inscription mardi 4 août 2020 Statut Membre Dernière intervention 23 novembre 2020 47
16 août 2020 à 10:40
bonjour,
vous pourriez ouvrir l'application en mode réduit ?
ex : start /min "" "C:\Windows\notepad.exe"
Cordialement,
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020
19 août 2020 à 16:24
Bonjour Chris_33000
Merci pour ta réponse.
je ne trouve pas comment écrire la fonction start. Pourrais-tu me dire ou on la trouve, merci d'avance.
Cordialement.
0
Chris_33000 Messages postés 523 Date d'inscription mardi 4 août 2020 Statut Membre Dernière intervention 23 novembre 2020 47
19 août 2020 à 18:34
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552 > Chris_33000 Messages postés 523 Date d'inscription mardi 4 août 2020 Statut Membre Dernière intervention 23 novembre 2020
19 août 2020 à 19:53
as-tu testé avec chrome?
0
Chris_33000 Messages postés 523 Date d'inscription mardi 4 août 2020 Statut Membre Dernière intervention 23 novembre 2020 47 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
19 août 2020 à 20:33
non je n'ai pas Chrome... J'ai testé avec IE c'est tout :
start /min "" "C:\Program Files\Internet Explorer\iexplore.exe"
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552 > Chris_33000 Messages postés 523 Date d'inscription mardi 4 août 2020 Statut Membre Dernière intervention 23 novembre 2020
19 août 2020 à 21:53
bonne idée, @Chris_33000, on dirait que ceci fonctionne:
Shell "C:\Program Files\Internet Explorer\iexplore.exe", vbMinimizedNoFocus 
,
je suppose donc que
Shell "C:\Program Files\Internet Explorer\iexplore.exe " & navigate , vbMinimizedNoFocus 

fera ce que pivecleyrac demande.
0
pivecleyrac Messages postés 8 Date d'inscription lundi 10 août 2020 Statut Membre Dernière intervention 20 août 2020 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
20 août 2020 à 14:30
C'est presque parfait messieurs, encore une petite question, la commande
Shell "C:\Program Files\Internet Explorer\iexplore.exe " & navigate , vbMinimizedNoFocus
ouvre une fenêtre pour me demander si je veux ouvrir ou enregistrer le fichier. Est-il possible d'obliger le fichier à s'enregistrer? Peur-être en php?
Merci d'avance.
0