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 :

Plantage boucle if (do loop while) else [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Par défaut Plantage boucle if (do loop while) else
    Bonjours à tous,

    Etant un novice en VBA je vous sollicite car j'ai un problème dont je ne trouve pas la réponse.
    En effet, je réalise une boucle IF recoupé d'une boucle DO LOOP WHILE au click sur un bouton pour faire clignoter des images.
    Celle-ci fonctionne à l'action du bouton.
    Néanmoins on ne peux plus rien faire sur le userform, impossible de reclicker sur le bouton, le programme plante et je suis obligé d'ouvrir le gestionnaire de tâches pour le fermer.
    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
     
    Private Sub PN_Click()
    'Présentation des feux rouge clignotant du PN à l'action du Bouton
     If PN.Value = True Then
            Do
                Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
                Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
                Application.Wait Now + TimeValue("0:00:01")
                Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
                Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
                Application.Wait Now + TimeValue("0:00:01")
                Loop While PN.Value = True 'Clignote tant que le bouton est enfoncé
        Else 'Sinon Feux eteins
            Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
            Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
       End If
    End Sub
    Y a t-il un problème dans mon code ? Peut on le faire d'une autre manière ?

    Merci de vos réponses.
    Clem

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, une recherche ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il faudrait à minima définir un nombre de clignotements

    voici pour 10 clignotements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    i = 0
    Do
        i = i + 1
        Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
        Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
        Application.Wait Now + TimeValue("0:00:01")
        Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
        Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
        Application.Wait Now + TimeValue("0:00:01")
    Loop While i < 11
    tu peux ensuite adapter l'idée :

    - définir arbitrairement le nombre de clignotements
    - laisser le choix à l'utilisateur (avec un choix par défaut)
    - au bout d'un certain nombre de clignotements, on peut proposer à l'utilisateur de relancer la séquence
    - etc..

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Par défaut
    Bonsoir,

    Merci pour la rapidité des réponses.

    --> kiki29 J'avais déjà trouvé ces discussions effectivement, mais étant un manche je n'ai pas réussi à les adapter à mon userform...

    -->joe.levrai Merci il y a de l'idée, néanmoins je souhaite avoir un nombre de clignotement infini tant que mon bouton PN est appuyé et retour à la normale lorsqu'il revient en position repos...

    Merci.
    Clem.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    De cette façon peut être ? D'après nle code de Joe :
    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
     
    Do
     
        Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
        Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\rouge.jpg ")
        Application.Wait Now + TimeValue("0:00:01")
        DoEvents
        DoEvents
        Me.Image8.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
        Me.Image9.Picture = LoadPicture("C:\Users\Clem\Desktop\TCO\blanc.jpg ")
        Application.Wait Now + TimeValue("0:00:01")
        DoEvents
        DoEvents
     
    Loop While PN.Value = False
    Hervé.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Par défaut
    Bonjour,

    Effectivement c'est cela et ça fonctionne !
    Petite modification par rapport à votre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Loop While PN.Value = True


    Merci beaucoup et bonne journée.
    Clem

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

Discussions similaires

  1. Question boucle while/else
    Par Stoos dans le forum Général Python
    Réponses: 3
    Dernier message: 08/05/2012, 20h36
  2. Problème avec une boucle de type Do While =>Loop
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/09/2011, 08h53
  3. [XL-2003] boucle loop while
    Par guitareveur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2009, 17h14
  4. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04
  5. Réponses: 3
    Dernier message: 03/11/2005, 19h22

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