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 :

Verification en boucle mais message unique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut Verification en boucle mais message unique
    Bonjour,

    Je fais cette boucle pour m'afficher un nombre qui revient 5 fois dans une plage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For elec = 1 To 100
    If WorksheetFunction.CountIf(Range("L" & a, "DK" & C), elec) = 5 Then
    MsgBox "BLA BLA BLA" & elec, 16, "BLA BLA"
    Traca.Electrodes.Caption = Traca.Electrodes.Caption & elec & ", "
    End If
    Next
    End Sub
    Mon soucis et que le msgbox revient tant que le nombre ne depasse pas 5 fois.
    Question:
    Comment faire pour que le msgbox ne vienne qu'une fois tout en continuant la vérification des autres nombres ?
    J'ai essayé différentes manipulation mais je n'y arrive pas.
    Merci de m'aiguiller.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux mémoriser le passage à 5 avec un tableau de variables booléennes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Tablo(1 To 100) As Boolean
    Sub Test()
    ………………
    ………………
    ………………
        For elec = 1 To 100
            If Tablo(elec) = False And WorksheetFunction.CountIf(Range("L" & a, "DK" & c), elec) = 5 Then
                MsgBox "BLA BLA BLA" & elec, 16, "BLA BLA"
                Traca.Electrodes.Caption = Traca.Electrodes.Caption & elec & ", "
                Tablo(elec) = True
            End If
        Next
    End Sub
    Cordialement.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut
    Merci pour cette réponse qui répond parfaitement à ma demande.

    Dans un soucis de comprehension quelques explication serait les bienvenue car en essayant quelques modif du code je n'arrive à rien du fait que je ne comprend pas la methode utilisé.
    Par exemple:
    - Si je déclare mon tableau après le sub test cela ne fonctionne plus.
    - Si j'ajoute une condition (= 5 or 10) j'ai le droit à un affichage de msgbox pour tous les nombres.
    - Si j'ajoute (= 5 and 10) cela fonctionne pour 5 mais pas 10.

    Serait-il possible de m'aider à comprendre ?

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si je déclare mon tableau après le sub test cela ne fonctionne plus.
    En plaçant la déclaration du tableau dans la section de déclaration du module (avant le sub ...) tu évites que le tableau soit réinitialisé à la fin de ta procédure. En clair, cela te permet de mémoriser la valeur des éléments du tableau.
    A noter que si tu optes pour la déclaration du tableau dans la section de déclaration du module, tu devras utiliser l’instruction Erase Tablo pour réinitialiser le tableau.
    Si j'ajoute une condition (= 5 or 10) j'ai le droit à un affichage de msgbox pour tous les nombres.
    Si j'ajoute (= 5 and 10) cela fonctionne pour 5 mais pas 10.
    Tu dois transcrire la condition suivante :
    Pour que le message puisse apparaitre, il faut:
    La variable booléenne avec la valeur FAUX
    ET
    (le nombre "elec" qui apparait 5 fois OU 10 fois dans la plage).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            If Tablo(elec) = False And _
            (WorksheetFunction.CountIf(Range("L" & a, "DK" & c), elec) = 5 Or _
            WorksheetFunction.CountIf(Range("L" & a, "DK" & c), elec) = 10) _
            Then
                MsgBox "BLA BLA BLA" & elec, 16, "BLA BLA"
                Traca.Electrodes.Caption = Traca.Electrodes.Caption & elec & ", "
                Tablo(elec) = True
            End If
    Cordialement.

Discussions similaires

  1. Message unique dans une boucle
    Par cdutrash dans le forum Langage
    Réponses: 12
    Dernier message: 28/10/2013, 09h38
  2. Réponses: 5
    Dernier message: 12/03/2006, 19h40
  3. [C++] [API WINDOWS] Vider la boucle de messages !
    Par chronos dans le forum Windows
    Réponses: 1
    Dernier message: 04/08/2005, 15h53
  4. [Servlet - MySQL] Ca marche mais message d'erreur quand même
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/11/2004, 15h15

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