IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Arrete execution pour reprendre ensuite VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut Arrete execution pour reprendre ensuite VBA
    Bonjour a tous!

    Voila j'aimerais interrompre l’exécution de mon code sous certaine condition pour afficher un UserForm qui permet à l'utilisateur de choisir une date pour la rajouter dans un tableau. Une fois que l'utilisateur à choisit sa date et que la macro d'ajout est terminée, je souhaite reprendre mon code là où je m'étais arrêté.

    Est-ce que cela est possible svp?

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Est-ce que cela est possible svp?
    oui c'est possible

    Mais était-ce vraiment ça la question ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Mais était-ce vraiment ça la question ?
    Non, et voici la question sous-entendue :
    Comment on fait?

    Je pensais pas à avoir à la développer mais bon...

  4. #4
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Peut-être peux tu nous envoyé ton code, sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub attente 
     
    UserFormPause.show 
    do while ValPause = 1 
    doevents 
    loop 
     
    exit sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Et bien en fait je n'ai pas de code pour le moment, seulement un If sans corps à l'intérieur.

    Tu peux me dire à quoi correspond ton ValPose stp?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If macondition
     
        MaUseformDate.Show      
     
    end if
    L'appel de la userform bloquera le code jusqu'a la sortie de cette dernière

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    jfontaine, l'appel au UserForm ne bloque pas le code, le UserForm s'affiche mais le code continue de s'éxécuter.

    jackborogar m'a donné la bonne solution, il fallait juste trouvé la condition pour le loop et pour moi c'était la visibilité du UserForm, ainsi voici mon code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If possible = False Then
        Usr_Creer.Show 0
        Do While Usr_Creer.Visible = True
        DoEvents
        Loop
    End If
    Merci à vous deux pour votre aide

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Je suis désolé de te contredire, mais l'ouverture d'un USEFORM en non modal (par défaut en VBA) bloque le code jusqu'a fermeture de a userform

    Le code ci dessous affichera le message "coucou" à la fermeture de Userform1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UserForm1.Show ou Userform1.Show 1
    MsgBox "coucou"
    par contre en ouverture modal, le code continue son exécution et affichera la userform & le message "coucou"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UserForm1.Show 0
    MsgBox "coucou"

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    J'ai pas testé en non modal, désolé, c'est l'habitude.

  10. #10
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    J'ai pas testé en non modal, désolé, c'est l'habitude.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Un nouveau problème a été détecté aujourd'hui!

    L'UserForm s'affiche bien, que ce soit en modal ou non est effectue bien ce que je veux en laissant le premier code en pause.
    Le problème survient quand l'utilisateur clique sur la croix rouge en haut a droite du UserForm. Là il faudrait que tout le code s'arrête, cependant le code du UserForm s'arrête bien mais pas mon premier code qui lui se déroule une fois que mon UserForm n'est plus visible.
    Je dois changer ma conditionnelle pour mon code, mais je ne vois pas comment la changer... Faudrait-il détecter le click sur la croix rouge?

    Est-ce que quelqu'un peut m'aider svp?

  12. #12
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu peux gérer cela sur l'évènement QueryClose

    Ici on test si la textbox1 est vide. Si c'est le cas, on empêche la sortie en affectant la valeur 1 à la variable Cancel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If TextBox1.Text = "" Then Cancel = 1
    End Sub

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Le problème est que j'ai déjà mis une valeur par défaut dans le textbox (DTPicker chez moi mais le principe est le même ^^)
    J'ai trouvé une solution, pas optimale mais bon.
    Donc j'arrive bien mon programme, et juste en dessous, je vérifie qu'une nouvelle date a été ajoutée, sinon j'exit sub.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    If possible = False Then
        Usr_Creer.Show 0
        Do While Usr_Creer.Visible = True
        DoEvents
        Loop
    End If
     
    'On vérifie qu'une nouvelle réunion a été créée, sinon on stop le programme
    For compteur = ligne + 1 To 20000
     
        If Sheets("Compte rendu").Cells(compteur, 1).Interior.ColorIndex = xlNone Then
            If Sheets("Compte rendu").Cells(compteur, 1) = "" Then
                Exit Sub
            End If
            Exit For
        End If
     
    Next compteur
    Si quelqu'un à mieux, je suis preneur

  14. #14
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    En adaptant le queryclose en gérant une variable IntFermeture qui pilotera la fermeture

    Si on clic sur la croix de fermeture rien ne se passe.
    Il faut passer par le Bouton "cmdQuitter" pour pouvoir sortir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim IntFermeture As Integer
     
    Private Sub UserForm_Initialize()
    IntFermeture = 1
    End Sub
     
    Private Sub cmdQuitter_Click()
    IntFermeture = 0
    Unload Me
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = IntFermeture
    End Sub

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Oui j'ai pensé faire un bouton pour quitter et interdire l’accès à la croix rouge mais bon, je préfère limite refaire une boucle For.
    Je suis une feignasse je sais
    Merci à vous tous en tout cas pour votre aide et votre temps!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44
  2. Pb de lien entre Access et Excel pour des fonctions VBA
    Par favien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2005, 01h00
  3. [MFC] Arreter execution d'une fonction
    Par ricky78 dans le forum MFC
    Réponses: 1
    Dernier message: 07/11/2005, 15h52
  4. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo