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 :

Interrompre une boucle Do While par un événement extérieur [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Automaticien
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Interrompre une boucle Do While par un événement extérieur
    Bonjour à tous,

    Dans une macro, j'essaie d'interrompre une boucle du type "Do While ... Loop" en positionnant une variable à partir d'une procédure événementielle rattachée à la feuille d'un autre classeur.

    Je m'explique, j'ouvre un fichier intermédiaire depuis mon fichier "source" et si l'utilisateur souhaite faire des modifications dans le fichier "secondaire" il valide ce choix via une pop-up.
    Pendant ce laps de temps, je souhaite figer le code de mon fichier "source" jusqu'à la fermeture de mon fichier "secondaire".
    A l’événement "avant-fermeture" de mon fichier secondaire, je modifie la valeur d'une case de mon fichier principale, valeur référant à une de mes variables. Cette même variable servirai à relancer mon code.

    Sous le bouton validation de modification du fichier "secondaire" de la pop-up de mon fichier "source", j'ai mis le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Joined_Click()
     
        Unload Me
     
        Do While Workbooks("xx").Worksheets("xx").Cells(1, 1).Value = False
            DoEvents
        Loop
     
        Msgbox "aaa"
     
        Workbooks("xx").Worksheets("xx").Cells(1, 1).Value = ""
     
    End Sub

    Pourriez-vous m'expliquer ou se trouve mon problème et quelle piste suivre afin de sortir de ma boucle car je suis en ce moment en train de nager complétement?

    Ma cellule change bien de valeur mais ma boucle ne le reconnait pas donc je n'en sors jamais...

    Je suis preneur de toute solution, même différente de mon principe qui permettrait de faire un DoEvents jusqu'à la fermeture d'un fichier Excel "secondaire"

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    il est normal que ta boucle de sorte par car ta variable Continue ne change pas de valeur.
    Tu l'instancies au début de la procédure puis plus rien.

    A la limite quelque chose dans ce genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Joined_Click()
     
    Do While Workbooks("xx").Worksheets("xx").Cells(1, 1).Value= False
       DoEvents
    Loop
     
     
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Automaticien
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci jfontaine pour cette première réponse. Cependant, mon problème est toujours le même, je ne sors pas de ma boucle.

    Mon code est dorénavant le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Joined_Click()
     
    Unload Me
     
    Do While Workbooks("xx").Worksheets("xx").Cells(1, 1).Value = False
    DoEvents
    Loop
     
    Msgbox "aaaa"
     
    Workbooks("xx").Worksheets("xx").Cells(1, 1).Value = ""
     
    End Sub

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    la valeur de Workbooks("xx").Worksheets("xx").Cells(1, 1).Value est bien celle attendue pour sortir de la boucle?
    Essais avec une valeur numérique plutôt que false

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Automaticien
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    La valeur de ma cellule change bien et que je change mon code par un test numérique ne résous malheureusement rien.

    L'état "False" est effectif pour une cellule vide ou "0".
    Dans mon cas, je ne sors pas de ma boucle et ne vois pas ma MsgBox.

    Merci pour le temps pris à me répondre.



    PS: La modifications suite à vos remarques est la suivante:

    Do Until Workbooks("xx").Worksheets("xxx").Cells(1,1).Value = "1"


    Ma cellule passe bien de l'état "vide" à "1" lors de la fermeture de mon fichier "secondaire"


    J'ai l'impression que mon code s'arrête complétement d’où le fait de na pas sortir de ma boucle mais pourquoi...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Automaticien
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Problème résolu autrement, merci pour votre aide.

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

Discussions similaires

  1. Interrompre une boucle while à l'appuie d'une touche
    Par robotsflo dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2013, 18h04
  2. Réponses: 2
    Dernier message: 06/02/2007, 15h05
  3. Réponses: 2
    Dernier message: 05/07/2006, 11h07
  4. Réponses: 13
    Dernier message: 20/03/2006, 16h26
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

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