Microsoft 365 VBS / Macro

antoine94170

XLDnaute Nouveau
bonjour à tous

je suis nouveau sur le forum et ai besoins de vos connaissances pour débloquer une situation sur laquelle je bloque maintenant depuis 4 jours. :)

j'ai développer sous excel en VBA un ensemble de tableau de bord permettant de collecter des informations et de les rendre disponible via un affichage à des équipes sur le terrain.

je souhaite mettre à jour automatiquement toutes les 60 minutes les informations à jours et également le visuel sur les différents graphiques.

je pense qu'une solution est l'utilisation des tâches planifiées.

Je n'ai pas une grande connaissance en VBS pour écrire les tâches planifiées mais ai déjà écrit le code ci dessous (qui fonctionne sans problème) me permettant d'ouvrir mon fichier excel de lancer la maccro puis d'enregistrer le fichier excel et de le refermer.

Dim Xl
dim wk
Set Xl = WScript.CreateObject("EXCEL.application")
Xl.Visible = True
Xl.enableevents=false
set Wk = Xl.workbooks.open("\\GANESHA\mfr\1. Supply Chain\14. Projets SC\DASHBOARD SUPPLY CHAIN\DASHBOARD SUPLY CHAIN GLOBAL\DASHBOARD SUPPLY CHAIN GLOBAL_V14.xlsm")
Xl.Run "mise_a_jour_outil_planificateur"
wk.save
wk.close
xl.quit

je souhaite donc à partir de mon fichier excel déjà ouvert exécuter via tache planifiée (me permettant ainsi de la répéter toutes les 60 minutes la tâche) qui me lancera la macro "mise_a_jour_outil_planificateur"

je suppose qu'il faut remplacer le code ci dessous par une instruction permettant de sélectionner le fichier Excel pour ensuite lancer la macro.

set Wk = Xl.workbooks.open("\\GANESHA\mfr\1. Supply Chain\14. Projets SC\DASHBOARD SUPPLY CHAIN\DASHBOARD SUPLY CHAIN GLOBAL\DASHBOARD SUPPLY CHAIN GLOBAL_V14.xlsm")


j'ai essayé différentes solutions mais sans résultat et n'ai pas trouvé de réponse sur les différents forums sur internet.


je m'en remet donc à vos expériences

merci d'avance pour votre support

Antoine
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
oui je suis d'accords avec @Valtraze si le fichier est ouvert autant se servir de application.ontime

si il n'etait pas ouvert voici un exemple de tacheplanifié tout les mercredi a 18H20
VB:
'tout les mercredi a 18:20
Sub test()
    Set wShell = CreateObject("Wscript.Shell")
    jour = "WED"    'pour le mercredi ' si pour plusieurs jours       'jour= "MON,TUE,WED,THU,FRI,SAT,SUN"
    
    NomTACHE = """patrick"""' nom de la tache
    
    chemin_fichier = """C:\Users\polux\DeskTop\monfichier.vbs"""' dans ce vbs tu ouvre l'app excel sur ton fichier
    
    A_quelle_Heure = "18:20"
    
    'codée avec argument
    wShell.Run "SchTasks /Create /SC WEEKLY /D " & jour & " /TN " & NomTACHE & " /TR " & chemin_fichier & " /ST " & A_quelle_Heure
    
    'codée en dur ça donne ça
    'wShell.Run "SchTasks /Create /SC WEEKLY /D WED /TN 'patrick' /TR 'C:\Users\polux\DeskTop\monfichier.vbs' /ST 18:20"
End Sub

cela dit je ferais une mise a jour dans un fichier text (CSV)
tout depends de ce que tu fait comme mise a jour en fait

et quand j'ouvre le fichier excel(au besoins) il aille repêcher les infos dans le csv
la dans ton vbs tu ouvre ton fichier excel et tout le toin toin et en visible en plus
une tache régulière doit être invisible et pas perturber l'utilisateur qui est peut être en train de faire autre chose