Commenr faire boucler une macro

bonjour a tous

j'utilise une user form avec 4 bouton

quand j'utilise le bouton de depart sur l userform, dedans jaurais besoin de faire boucler une macro toute les minutes

mais, j'ai besoin que les autres bouton soit utilisable

et que le 4eme bouton arrete le bouclage

merci

un peu comme une macro en boucle d arriere plan

Bonjour v tec,

Merci de joindre un fichier excel pour pouvoir t'aider.

Ce que tu cherches c'est une ligne du type:

Application.Ontime Now + timeserial(0,1,0),"macro a faire tourner"

Sans fichier je ne pourrai pas t'aider d'avantage.

Merci je vais essayer peux tu detailler time serial(0,1,0) pour que je comprenne heure,minute,seconde?

Comment le stopper ensuite?

Mon fichier est trop lourd pour etre ici

TimeSerial(heure,minute,seconde)

Application.Ontime Now + timeserial(0,1,0),"macro a faire tourner"

Avec cette ligne tu planifies le lancement de la procédure "macro à faire tourner" dans une minute (maintenant + 1 min)

Ensuite si tu veux que toutes les X minutes la procédure se relance, il faut inclure ce code à l'intérieur de ta procédure "macro à faire tourner"

Ainsi tu appelles une première fois la macro, et ensuite elle se replanifie à chaque exécution.

Pour l'arrêt, je te laisse chercher sur internet, je n'ai jamais trouvé de solution qui fonctionnais pour moi.

merci ca marche alors pour l arreter je pense a une solutionmais je sais pas trop comment l ecrire

sur mon user form j ai 3 bouton obligatoire

depart du chrono

import des données

stop chrono

je dois les utiliser dans cet ordre, l idée est d apl une variable genre initimport=0 quand je clique sur depart

lorsque je lance import de donnée en debut de macro je test initimport, si il est =0 alors je boucle ma macro

si =1 je fais exit sub

qu en pense tu?

quand jez stop le chrono, je passe initimport=1

Il est difficile de lire tes messages v tec. Fais un effort niveau présentation et orthographe s'il te plait

Concernant ta remarque, oui tu peux tout à fait utiliser une variable pour savoir où tu en est. Cependant si cette variable ne peux prendre que 2 valeurs, opte pour un Boolean (Vrai Faux / True False)

Dans ton Userform, il te suffira

  • de déclarer cette variable globale (donc tout en haut du code du userform, et en dehors de toute procédure/fonction)
  • dans l'évènement _Initalize() du UserForm (du formulaire) de lui donner sa valeur initale (true ou false suivant ta logique et ce qu'elle représente)
  • modifier cette variable en fonction des boutons cliqués, et adapter les actions en fonction de la valeur de cette variable
If maVariable = False then procedureTOTO

Cependant attention, si tu utilises cette méthode (variable globale dans le userform), il FAUT que celui-ci reste ouvert. A partir du moment où le userform se ferme, la variable n'est plus utilisable, et à la relance elle se réinitialisera.

Si cette solution te convient et/ou tu as d'autres questions je reste à ton écoute.

C est bon ça marche merci

je tente d'optimiser un peu ma macro pour la rendre "universelle" de poste en poste, mais il'y a des trucs que je pige pas

exemple:

Sub importer()

Set wb = ThisWorkbook

sPath = wb.Path & Application.PathSeparator

res = FileLen(wb.Path & Application.PathSeparator & "données.txt")

While res = 0

res = FileLen(wb.Path & Application.PathSeparator & "données.txt")

Wend

If Range("a2").Value = 0 Then

Application.ScreenUpdating = False

Sheets("données").Select

Range("B7:D7000").Select

Selection.ClearContents

Range("B7").Select

With ActiveSheet.QueryTables.Add(Connection:= _

"TEXT;wb.Path & Application.PathSeparator & "données.txt"" _

, Destination:=Range("$A$7"))

'"TEXT;C:\Users\labo\Desktop\logiciel controle de poid version bureau\données.txt" _

, Destination:=Range("$A$7"))

.Name = "données"

.FieldNames = True

end sub

je veux remplacer la ligne bleu par la jaune, mais ça ne marche pas, alors que au debut de la macro, c'est la même, mais ça marche

Bonjour

A tester

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Wb.Path & Application.PathSeparator & "données.txt", Destination:=Range("$A$7"))

c 'est bon a priori c est good

Rechercher des sujets similaires à "commenr boucler macro"