Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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?
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)
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
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é
- 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