Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Lancement périodique d'une macro, possible ou non?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

julien974

XLDnaute Occasionnel
Bonjour,

Je débute en VBA et je commence à faire des choses vraiment interessantes et vraiment construites. Mais su ce coup là je bloque! pourriez vous m'aider?

Ma demande :

Je souhaiterais savoir s'il est possible de lancer une macro périodiquement, toutes les heures, demi heures, quart d'heure,...

Si oui, est il possible de la lancer entre deux bornes horraires? (entre 6h et 21 par exemple)

De plus, est t il possible de le faire sans que j'ai à ouvrir moi même le fichier?

Si tout est possible ce serait vraiment le pied!

Merci de vos réponses

Juli3n974
 
Re : Lancement périodique d'une macro, possible ou non?

Bonjour,
Je souhaiterais savoir s'il est possible de lancer une macro périodiquement, toutes les heures, demi heures, quart d'heure,...
Si oui, est il possible de la lancer entre deux bornes horraires? (entre 6h et 21 par exemple)
A priori, oui, encore faut-il savoir ce que fait cette procédure
De plus, est t il possible de le faire sans que j'ai à ouvrir moi même le fichier?
Parce qu'il faut ouvrir un fichier ?!
Si c'est celui qui contient la macro, à part le gestionnaire de tâche Windows, je ne vois pas.
Dans Windows, nouvelle tâche plannifiée et tu suis la procédure
Dans ton fichier Excel, tu lances la procédure à l'ouverture du classeur
Plus de précisions sont nécesaires si tu ne comprends pas
A+
kjin
 
Re : Lancement périodique d'une macro, possible ou non?

Bonjour Kjin et merci pour ces quelques précisions.

A mon tour d'apporter les miennes!

Je travaille dans une PF logistique. Mon objectif est d'avoir une photographie des flux à certains moments de la journée et à plusieurs endroits de l'entrepot. Il a fallut au préalable définir le jalonement tout au long de la chaine logistique de cet entrepot:

- reception des palettes
- mise en stock de masse (stock en hauteur)
- transfert
- mise en stock picking (stock pret pour le préparation des pelettes)
- préparation des commandes
- zonage sur le quai
- expédition

Pour photographier à un instant T le flux, j'ai créé des requêtes (que je lance toutes les heures pour le moment) de notre progiciel qui me donnent les informations relatives au jalons ci dessus. ces requêtes sont en format bloc note.

Je vais maintenant créer qq chose qui lance ces requêtes de progiciel toutes les x minutes...

C'est alors qu'Excel entre en action. J'ai créer des macro qui importent les données externes (les requêtes), les analyse (nb de pal, nb colis, nb transferts,...), et condense tout dans un fichier global qui me donne (pour l'instant) par jour puis par heure les différentes photographies de mes flux.

Bon tout pendant que c'est en maille horraire ça va, ce n'est pas trop lourd à gérer... mais si je souhaite affiner au 1/4 d'heure, voir, moins, un lancement périodique va s'imposer! d'où mes questions aux départ! En clair je souhaiterais que ma périodicité de lancement de macro suive celle de ma requête de base.

L'objectif quand même est de voir sur une journée, a quelle h et où la charge de travail est trop important. Ainsi nous pourrons anticiper le nb de personnes à mettre en face. De cette façon nous fluidifions les flux, desengorgeons les goulots d'atranglement,... A savoir que le gain de productivité "global", je dis bien global est de l'ordre de 10 à 15%, ce qui n'est pas négligeable en cette période de morosité économique. Cette méthode fait partie du Lean Manufacturing qui découle du Toyotisme.

J'espère avoir été clair dans mes explications,

Ma demande est donc :

Une macro qui pour un jour donné, entre deux bornes horaires et toutes les X minutes, se lance automatiquement...

Ci joint ma macro globale (qui en lance d'autre) :

HTML:
Sub Macro2()

Application.ScreenUpdating = False

Range("A500").Value = InputBox("Entrez l'heure d'éxécution de la requête :", "Nouvelle requête", Heure)


On Error Resume Next
Workbooks("lotprepa.xls").Activate
If Err <> 0 Then
fichier = "F:\lotprepa.xls"
Workbooks.Open Filename:=fichier
End If

On Error Resume Next
Workbooks("palette.xls").Activate
If Err <> 0 Then
fichier = "F:\palette.xls"
Workbooks.Open Filename:=fichier
End If

On Error Resume Next
Workbooks("stock.xls").Activate
If Err <> 0 Then
fichier = "F:\stock.xls"
Workbooks.Open Filename:=fichier
End If

On Error Resume Next
Workbooks("transferts.xls").Activate
If Err <> 0 Then
fichier = "F:\transferts.xls"
Workbooks.Open Filename:=fichier
End If



    Windows("lotprepa.xls").Activate
    Application.Run "lotprepa.xls!Macro1"
    Windows("palette.xls").Activate
    Application.Run "palette.xls!Macro1"
    Windows("stock.xls").Activate
    Application.Run "stock.xls!Macro1"
    Windows("transferts.xls").Activate
    Application.Run "transferts.xls!Macro1"
    Windows("Synthèse journée.xls").Activate
    
    Workbooks("lotprepa.xls").Close savechanges:=True
    Workbooks("palette.xls").Close savechanges:=True
    Workbooks("stock.xls").Close savechanges:=True
    Workbooks("transferts.xls").Close savechanges:=True

Application.ScreenUpdating = True

End Sub

Merci de votre aide,

Juli3n974
 
Re : Lancement périodique d'une macro, possible ou non?

Re,
Dans un premier temps, il faut créer une tâche planifiée qui ouvre ton fichier à l'heure souhaitée, en lançant un fichier batch par exemple (attention aux noms longs avec DOS)
Code:
@echo off
"Le chemin\le nom de ton fichier excel.xls"
Reste à gérer l'activation auto des macros en signant ton projet
Dans un second temps, une fois le fichier ouvert, il faudra créer une macro qui à partir de ce moment, avec la méthode OnTime, executera la macro2 et les macros suivantes (dont on ne sait rien) à intervalles réguliers (ici 15 mn)
Dans le module ThisWorkbook du fichier
Code:
Private Sub Workbook_Open()
LancerMacro2
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopMacro2
End Sub
Et dans le module standard
Code:
Sub LancerMacro2()
Temps = Now + TimeValue("00:15:00")
Application OnTime, Temps, "Macro2"
End Sub

Sub Macro2()
'...le code de ta macro
LancerMacro2
End Sub

Sub StopMacro2()
On Error Resume Next
Application OnTime, Temps, "Macro2", False
End Sub
Je ne peux vérifier donc sans garantie

Edit :
Je ne sais pas s'il est utile dans ce cas d'ouvrir et fermer tes fichiers tous les quart d'heure ?!
Comme tu écrases les fichiers précédents, il faudra renommer tes fichiers à chaque nouvel enregistrement (avec l'heure par exemple), parce que c'est quand même la finalité


A+
kjin
 
Dernière édition:
Re : Lancement périodique d'une macro, possible ou non?

Très bien, je prend note de tes bons conseils.

J'ai plus de précision. Je vais tout d'abord devoir le faire toute les heures (8h30, 9h30, 10h30,...)

Je vais essayer de parametrer tout ça et je te revient si problème...

Bonne soirée,

Juli3n974

Si d'autres personnes ont des idées, elles seront les bienvenues!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
1
Affichages
985
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…