VBA excel : continuer une macro par un click
Résolu
vanessa002
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
-
29 janv. 2011 à 22:45
vanessa002 Messages postés 11 Date d'inscription samedi 29 janvier 2011 Statut Membre Dernière intervention 10 juin 2011 -
vanessa002 Messages postés 11 Date d'inscription samedi 29 janvier 2011 Statut Membre Dernière intervention 10 juin 2011 -
Bonjour,
Après 2 jours de recherche j'ai décider de poser ma question sur le forum.
Voila le problème est simple mais je n'arrive pas à voir comment faire. Je débute en VBA excel mais j'arrive déja à faire pas mal de chose. En ce moment je travail sur un projet pour mon travail de fin d'étude.
J'aimerai savoir s'il est possible d'interrompre une macro en ajoutant une ligne dans le code. Le but est que la macro reprenne, là où elle s'est arrêtée, grâce à un click sur un bouton. Cela me permet d'encoder des valeurs utilisées par la macro à chaque cycle d'une boucle For.
Merci d'avence pour votre aide.
Après 2 jours de recherche j'ai décider de poser ma question sur le forum.
Voila le problème est simple mais je n'arrive pas à voir comment faire. Je débute en VBA excel mais j'arrive déja à faire pas mal de chose. En ce moment je travail sur un projet pour mon travail de fin d'étude.
J'aimerai savoir s'il est possible d'interrompre une macro en ajoutant une ligne dans le code. Le but est que la macro reprenne, là où elle s'est arrêtée, grâce à un click sur un bouton. Cela me permet d'encoder des valeurs utilisées par la macro à chaque cycle d'une boucle For.
Merci d'avence pour votre aide.
9 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 276
Modifié par eriiic le 30/01/2011 à 21:00
Modifié par eriiic le 30/01/2011 à 21:00
Re,
Si tu veux autoriser un utilisateur à saisir dans une cellule tu peux arreter la macro en affichant un userform non modal avec :
UserForm1.Show vbModeless
exemple
eric
PS : La méthode de lermite que je viens de tester est très bien aussi
Si tu veux autoriser un utilisateur à saisir dans une cellule tu peux arreter la macro en affichant un userform non modal avec :
UserForm1.Show vbModeless
exemple
eric
PS : La méthode de lermite que je viens de tester est très bien aussi
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 30/01/2011 à 22:28
Modifié par lermite222 le 30/01/2011 à 22:28
Option Explicit Dim Continue As Boolean Sub Attendre() 'Le début du code.. '........... While Not Continue DoEvents Wend Continue = False 'La suite du code.. '........... End Sub Private Sub CommandButton1_Click() Continue = True End Sub
Mais le plus simple serait de mettre la suite du code de la macro dans le code du bouton.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
vanessa002
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
30 janv. 2011 à 22:40
30 janv. 2011 à 22:40
Lermite,
merci là je vois ce que tu veux faire avec ton code. Je pourrai tester ton code sans me poser de question mais c'est plus fort que moi. J'aurai encore 2 petites questions au sujet de ton code :
- Le Doevents sert à quoi? je ne peux pas tout simplement mettre une boucle vide?
- Je suppose que l'instruction 'continue = false' après la boucle while permettera au code d'attendre à nouveau le click de l'utilisateur pour l'encodage de la donnée suivante? (mon code se trouve en fait dans une boucle for et l'utilisateur doit entrer ses données à chaque cycle de la boucle for)
Encore merci pour votre aide, je debute en VBA et en programmation en général.
merci là je vois ce que tu veux faire avec ton code. Je pourrai tester ton code sans me poser de question mais c'est plus fort que moi. J'aurai encore 2 petites questions au sujet de ton code :
- Le Doevents sert à quoi? je ne peux pas tout simplement mettre une boucle vide?
- Je suppose que l'instruction 'continue = false' après la boucle while permettera au code d'attendre à nouveau le click de l'utilisateur pour l'encodage de la donnée suivante? (mon code se trouve en fait dans une boucle for et l'utilisateur doit entrer ses données à chaque cycle de la boucle for)
Encore merci pour votre aide, je debute en VBA et en programmation en général.
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 314
30 janv. 2011 à 09:30
30 janv. 2011 à 09:30
Bonjour,
Peut-^tre tout simplement avec une msgbox ?
Peut-^tre tout simplement avec une msgbox ?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 276
Modifié par eriiic le 30/01/2011 à 10:57
Modifié par eriiic le 30/01/2011 à 10:57
Bonjour tout le monde,
Voire même une inputbox si tu dois avoir une saisie.
Ex :
Message = "Entrez une valeur comprise entre 1 et 3"
Title = "Démonstration de InputBox" ' Définit le titre.
Default = "1" ' Définition la valeur par défaut.
' Affiche le message, le titre et la valeur par défaut.
MyValue = InputBox(Message, Title, Default)
eric
Voire même une inputbox si tu dois avoir une saisie.
Ex :
Message = "Entrez une valeur comprise entre 1 et 3"
Title = "Démonstration de InputBox" ' Définit le titre.
Default = "1" ' Définition la valeur par défaut.
' Affiche le message, le titre et la valeur par défaut.
MyValue = InputBox(Message, Title, Default)
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
vanessa002
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
30 janv. 2011 à 18:54
30 janv. 2011 à 18:54
eriiic,
j'ai essayé avec une inputbox mais serait il possible que l'utilisateur puisse taper sa valeur dans une cellule d'excel et que cette valeur soit assignée à une variable en appuyant sur un bonton click?
La macro devrait attendre que l'utilisateur remplisse cette cellule et clique sur le bouton pour reprendre son cours...
merci d'avance
j'ai essayé avec une inputbox mais serait il possible que l'utilisateur puisse taper sa valeur dans une cellule d'excel et que cette valeur soit assignée à une variable en appuyant sur un bonton click?
La macro devrait attendre que l'utilisateur remplisse cette cellule et clique sur le bouton pour reprendre son cours...
merci d'avance
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
30 janv. 2011 à 20:05
30 janv. 2011 à 20:05
Bonjour,
Avec une boucle conditionnelle ?
Avec une boucle conditionnelle ?
Sub Attendre() 'Le début du code.. '........... While Range("B5") = "" DoEvents Wend 'La suite du code.. '........... End SubA+
vanessa002
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
30 janv. 2011 à 21:52
30 janv. 2011 à 21:52
Merci eriiic,
j'avais déja essayé avec les userform mais j'ai trouvé cela un peu compliqué.
Lermite,
avec ce code, je sort de la boucle While une fois que la cellule "B5" est remplie par l'utilisateur, pas vrai?
Mais alors serait-il possible de sortir de la boucle que lorsque l'utilisateur clique sur un bouton, après avoir encodé sa valeur dans la cellule "B5"? Ma question devient plus précise parce que je sens qu'on se rapproche du but.
Merci d'avance à vous.
j'avais déja essayé avec les userform mais j'ai trouvé cela un peu compliqué.
Lermite,
avec ce code, je sort de la boucle While une fois que la cellule "B5" est remplie par l'utilisateur, pas vrai?
Mais alors serait-il possible de sortir de la boucle que lorsque l'utilisateur clique sur un bouton, après avoir encodé sa valeur dans la cellule "B5"? Ma question devient plus précise parce que je sens qu'on se rapproche du but.
Merci d'avance à vous.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
30 janv. 2011 à 23:21
30 janv. 2011 à 23:21
Le DoEvents permet à l'appli de continuer, sans cette fonction Excel est bloquer.
Pour continue = false... C'est excat
Pour continue = false... C'est excat
vanessa002
Messages postés
11
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
10 juin 2011
1
31 janv. 2011 à 20:44
31 janv. 2011 à 20:44
Merci à vous pour votre aide.