Excel + Macro + Tâches planifiée

Résolu
Bonjour,

J'essaie de faire en sorte de mettre à jour automatiquement tout les jours à une heure donnée un classeur excel

Le classeur, grâce à une macro, va chercher ses informations dans une base de donnée AS400 mise à jour quotidiennement

Le problème c'est que je ne sais pas comment lancer cette macro avec l'utilitaire de tâches planifiée de windows, on peux facilement lui faire ouvrir le classeur mais comment faire pour que la macro s'exécute dès l'ouverture du classeur

Pour ne pas arranger les chose cette macro nécessite lors de son exécution que l'utilisateur y entre un nom d'utilisateur et un mot de passe

Merci d'avance pour votre aide ^_^

5 réponses

  1. Contributeur
    Bonjour,

    pour lancer votre macro dès l'ouverture du fichier, allez dans l'éditeur de macro, cliquez sur la page "ThisWorkbook" en haut à gauche, et créez une macro Workbook_Open(), dans laquelle vous mettrez le nom de la macro à lancer.

    Exemple :
    Private Sub Workbook_Open()
    nom_de_macro_à_lancer
    End Sub


    Cordialement.
    4
    1. je teste...

      edit: ça fonctionne, la macro se lance bien avec le classeur
      reste qu'il est nécessaire d'entrer le nom d'utilisateur et le mot de passe requis par la macro
      existe-il un moyen d'entrer "en dur" ce nom et mot de passe ?
      0
  2. Contributeur
    Bonjour

    Pour utiliser le gestionnaire de tâches avec procédure access identique à excel
    https://jpcheck.developpez.com/tutoriels/access/access-et-fichiers-batch-passage-parametres/#LV

    scripts batch/dos pour lancer Excel: lien dans l'article précédent
    "C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" "C:\temp\classeur1.xls"
    office11= XL2003
    office12=XL2007
    pour savoir: regarder dans program file de l'explorateur

    par prudence, utilise workbook_open comme te l'a conseillé chossette
    Michel
    1
    1. Contributeur
      Et pour compléter, XL2010 = office14. Il n'y a pas d'Office13 par superstition ;)
      0
    2. merci beaucoup pour les conseils, ça va me faire gagner un temps fou ^_^
      0
  3. Bonjour;
    je tien bon à ce sujet là , j'ai quelque souci à propo des planification des taches.
    J'ai une macro qui ce lance automatiquement dè l ouverture d un fichier excel.
    Cette macro est placée dans le fichier perso.xls d un serveur d application et ça fonctionne tres bien.
    le probleme c'est que je doit trouver une solution avec laquelle les fichiers excel , crées ou mises à jour dans les dernieres 20 mn seront lancée automatiquement. Ces fichiers sont placée dans une repertoire fixe C://user/Download.
    y a til une solution svp.
    0
    1. Sub auto_exe()

      x = CDate(Time - Sheets("namesheet").Cells(1, 25).Value)
      'If Right(Time, 5) = "00:00" Then
      'l'intervalle d'execution de la macro
      v1 = "09:00:00"
      v2 = "22:00:00"

      Delai2 = "00:20:00"
      If Time > TimeValue(v1) And _
      Time < TimeValue(v2) Then
      ' MsgBox (x)
      If TimeValue(x) > TimeValue(Delai2) Then
      NextTime = CDate(Fix(Now / TimeValue("00:20:00")) * TimeValue(Delai)) + TimeValue(Delai)
      Application.OnTime NextTime, "auto_exe"
      Call fonction_exec
      Else

      MsgBox ("Délai non encore dépassé....")
      End If

      End If
      End Sub
      0
  4. Bonjour, je répond beaucoup plus tard, je suis dans la même impasse j'ai beau essayé de passer par une autre méthode à savoir, OnTime
    mais rien n'y fais ... Je dois gérer de manière planifiée le transfert de fichier .skf en PDF

    Sub demarrage()
    Application.OnTime TimeValue("00:00:00"), "MonApplication"
    End Sub

    Sub MonApplication()
    XXX
    End Sub

    Bien à vous.
    0
    1. Contributeur
      Bonjour
      test si un fichier a été enrgisyré depuis moins de 20mn
      par exemple
      delai = Now - FileDateTime("D:\docus\zone_aleatoire.xls")
      If delai < 20 / 1440 Then MsgBox "gagné"


      Michel
      0
      1. Merci c'est résolu depuis un moment :) pour le moment j'ai un soucis de boucle récursive il ne quitte pas lorsque les arguments sont null et me renvoie une erreur lorsqu'il a fini le programme ^^ Bien à toi
        0