Lancer un shell et garder la main dans Excel

pivecleyrac Messages postés 8 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, veux-tu dire que la macro s'arrête en attendant que chrome se termine?
    0
  2. pivecleyrac Messages postés 8 Statut Membre
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. pivecleyrac Messages postés 8 Statut Membre
     
    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
  4. pivecleyrac Messages postés 8 Statut Membre
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pivecleyrac Messages postés 8 Statut Membre
     
    Oui c'est parfaitement ça. Du coup c'est possible?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je ne pense pas qu'on puisse demander à chrome de rester discret.
      0
      1. pivecleyrac Messages postés 8 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Effectivement ça semble compliqué, Merci pour ton coup de main.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > pivecleyrac Messages postés 8 Statut Membre
         
        peux-tu alors marquer la discussion comme résolue?
        0
  7. Chris_33000 Messages postés 533 Statut Membre 48
     
    bonjour,
    vous pourriez ouvrir l'application en mode réduit ?
    ex : start /min "" "C:\Windows\notepad.exe"
    Cordialement,
    0
  8. pivecleyrac Messages postés 8 Statut Membre
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Chris_33000 Messages postés 533 Statut Membre
       
      as-tu testé avec chrome?
      0
    2. Chris_33000 Messages postés 533 Statut Membre 48 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      non je n'ai pas Chrome... J'ai testé avec IE c'est tout :
      start /min "" "C:\Program Files\Internet Explorer\iexplore.exe"
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Chris_33000 Messages postés 533 Statut Membre
       
      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
    4. pivecleyrac Messages postés 8 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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