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 -
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.



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
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
4
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
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.
2
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
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.
1
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
Bonjour,

Peut-^tre tout simplement avec une msgbox ?
0
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
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
0

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
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
0
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
Bonjour,
Avec une boucle conditionnelle ?
Sub Attendre()
   'Le début du code..
   '...........
    While Range("B5") = ""
        DoEvents
    Wend
   'La suite du code..
   '...........
End Sub
A+
0
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
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.
0
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
Le DoEvents permet à l'appli de continuer, sans cette fonction Excel est bloquer.

Pour continue = false... C'est excat
0
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
Merci à vous pour votre aide.
0