Execution d'une macro planifiée

Bonjour à tous,

Bon, je suis perdu.. Je souhaite exécuter une macro tous les jours du lundi au vendredi à 7h.

J'ai vu la solution de Workbookopen avec une tâche planifiée dans windows pour ouvrir le fichier.

Par contre à 8h mes collègues vont ouvrir le fichier et par défaut, la macro va se relancer automatiquement à l'ouverture de celui-ci, non ?

Ce dont j'ai besoin c'est mettre à jour les données à 7h pour qu'à 8h les collègues puissent utiliser le fichier sans avoir à attendre 10 mins que cela se mette à jour.

Merci par avance de votre aide !

Voici le code de ma macro qui met à jour les éléments :

Sub actualisation()
'
' actualisation Macro

    Sheets("stock").Select
    Range("Tableau_Lancer_la_requête_à_partir_de_AS400[[#Headers],[STKREEL_INV]]"). _
        Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Code etat OF").Select
    Range("Tableau_Code_etat_OF[[#Headers],[CDE_ETAT]]").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("moupre_1").Select
    Range("Tableau_Moupre[[#Headers],[Clé unique]]").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Feuil1").Select
    Range("C19").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
End Sub

Salut,

Tu peux créer une variable récupérant l'heure d'ouverture de ton classeur (en utilisant la fonction Time), et ensuite mettre une condition sur cette variable.

Exemple:

- Si le classeur est ouvert entre 6h30 et 7h30, alors tu exécutes ta macro

- Sinon, tu ne fais rien

Bibu

Salut Bibu,

Ah oui ce serait top ! Par contre je suis vraiment mauvais en code VBA...

Si tu as une idée du code qu'il faudrait pour déclarer cette variable je suis preneur.

En tout cas merci pour ton aide

Sur ce même site tu as une explication de la fonction, avec le même cas de figure que toi en dernier paragraphe (à peu de chose près).

Je te laisse regarder par toi-même, tu apprendras bien plus que si c'était moi qui t'écrivais le code :)

https://www.excel-pratique.com/fr/fonctions-vba/time

Si jamais tu as vraiment du mal ceci-dit, je t'aiderais quand même

Merci beaucoup !

Du coup j'ai déclaré une macro dans le classeur, qui appel une macro de module

Private Sub Workbook_Open()
  If Hour(Time) <= 7 Then Call Module2.actualisation2
End Sub

et ma macro de module c'est : (elle me permet de sauvegarder et quitter excel, comme ça l'utilisateur n'aura pas la MAJ à chaque ouverture)

Sub actualisation2()
'
' actualisation Macro à l'ouverture du fichier

    Sheets("stock").Select
    Range("Tableau_Lancer_la_requête_à_partir_de_AS400[[#Headers],[STKREEL_INV]]"). _
        Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Code etat OF").Select
    Range("Tableau_Code_etat_OF[[#Headers],[CDE_ETAT]]").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("moupre_1").Select
    Range("Tableau_Moupre[[#Headers],[Clé unique]]").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Feuil1").Select
    Range("C19").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
    ActiveWorkbook.save
    Application.Quit

End Sub

J'ai testé et cela marche, je n'ai plus qu'à coupler cela avec un planificateur de tâche windows et normalement ça roule.

Encore merci pour l'info sur time, ça m'a bien aidé !

Rechercher des sujets similaires à "execution macro planifiee"