Lancer un shell et garder la main dans Excel

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

7 réponses

  1. Contributeur
    bonjour, veux-tu dire que la macro s'arrête en attendant que chrome se termine?
    0
    1. 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
      1. Contributeur
        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
    2. 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
    3. 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
      1. Contributeur
        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
    4. Oui c'est parfaitement ça. Du coup c'est possible?
      0
      1. Contributeur
        je ne pense pas qu'on puisse demander à chrome de rester discret.
        0
      2. @yg_beEffectivement ça semble compliqué, Merci pour ton coup de main.
        0
      3. Contributeur
        @pivecleyracpeux-tu alors marquer la discussion comme résolue?
        0
    5. bonjour,
      vous pourriez ouvrir l'application en mode réduit ?
      ex : start /min "" "C:\Windows\notepad.exe"
      Cordialement,
      0
      1. 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
        1. Contributeur
          @Chris_33000as-tu testé avec chrome?
          0
        2. @yg_benon je n'ai pas Chrome... J'ai testé avec IE c'est tout :
          start /min "" "C:\Program Files\Internet Explorer\iexplore.exe"
          0
        3. Contributeur
          @Chris_33000bonne 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
        4. @yg_beC'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