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

XL 2010 Durée maxi d'une macro

  • Initiateur de la discussion Initiateur de la discussion D.D.
  • Date de début Date de début

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 !

D.D.

XLDnaute Impliqué
Bonjour à tous.

Sur un ordi totalement automatique pour faire des DashBoard, j'ai parfois des macros qui se mettent en pause, en attente d'un événement extérieur (genre extraction SAP ou site Web) que la macro pilote elle-même.
Hélas, parfois, l’événement ne se produit pas et mon fichier Excel reste a attendre bêtement quelque chose qui ne se produira pas.

Pour l'instant je contourne le problème en lançant en même temps un VBS qui checke au bout de xx minutes si le fichier est encore ouvert et si c'est le cas le Kill.

C'est bourrin.

D'ou ma question: Connaissez vous une astuce pour que si une macro reste figée en attente d'une instruction dure trop longtemps une gestion d'erreur se mette en place ?
Pour simuler: un simple msgbox sans réponse utilisateur peut suffire.

Merci.
 
Bonsour® voir instruction : Application OnTime
à toi de t'assurer que :
  • durée d'attente normale ou pas
  • l'arret du traitement ne crée pas d'autres problèmes (fin brutale, rollback, point de reprise, archive, accès différé, connexions ??,,)
  • quelle information utilisateur
 
re
Bonjour D.D et le fil
separe t sub lanceuse des action SAP ou web et transforme ces reponse de code en fonction

sub lance
x=mafunction1'attend la réponse de mafonction1
if x=truc then z=mafonction2 'si x est passé on lance avec z et attend la réponse de mafonction2

etc...
end if
les (do loop )c'est dans les fonctions
ainsi tu peux mettre un espion qui peut te dire a quel moment ca a planté ou trop long selon x ou z (x et z étant des variables de type que tu veux) bien sur
 
Hello,

Merci pour vos réponses.
@Modeste geedee
Le Application.OnTime Now ne permet pas d'interrompre une attente d'un traitement. Dommage.

@job75 & patricktoulon
En fait je ne mets pas en pause moi-même.
Dans des extractions SAP, typiquement, c'est le Script SAP lui même qui "attend" la réponse de SAP. Donc la macro reste "coincée" sur une instruction, en attente que l'application serveur (SAP) réponde. Et il est possible qu'elle ne réponde pas. Je ne peux donc pas faire de test de durée car l’exécution de la macro est elle même interrompue.
 
Bonsour®
je n'ai pas parlé de NOW !!!
l'instruction OnTime permet au moins l'éxécution de la proc "bourrin ou Kill" à un horiare à préciser !!!
A ce que je connais, il y a:
Application.OnTime Now + TimeValue("00:00:10"), "my_Procedure" pour lancer "my_Procedure" 10 sec après
ou.
Application.OnTime TimeValue("17:00:00"), "my_Procedure" pour lancer "my_Procedure" à 17:00

il y a d'autre techniques ?

Ce que je voudrais, par exemple, c'est que si la macro est interrompue (par exemple un bête "MSGBOX" ou une boule infinie, même si ce n'est pas mon cas), "quelque chose" d'automatique reprenne la main au bout d'un moment.
 
re
Bonsoir @D.D
tu prends le probleme a l'envers les attente tu les a deja sauf que des foit pour cause inconnue ca tourne a l'infini

ca veux dire que tu a certainement des do loop (until /while quelque chose
et bien c'est simple
dans ces attentes tu ajoute un timer
ex:
t=timer
do:x=x+1:doevents:loop until x=10000000 or timer-t>=4
if x<10000000 then msgbox "oulalah!! c'est un peu long tout ca ":exit sub

soit ca s'arrete a 10000000 soit si on y arrive pas au bout de 4 secondes on sort
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…