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 :

Boucle while if then wend qui saute des crans [XL-2010]


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
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut Boucle while if then wend qui saute des crans
    Bonjour à tous, voila presque une heure que je ne saisi pas ou est les problème sur cette boucle :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Postes()
     
    Dim i As Integer
    Dim MyTab As Range
     
    Plig = 7
    NbAg = 28
    Pcol = 4
    Dlig = 68
    Const incr = 6
     
    Set MyTab = Range("D7:AE68")
     
    MyTab.ClearContents
     
    Randomize
    i = Plig
    While i <= Dlig
        If Cells(i, 3).Value = "Oui" Then
            If Cells(i + 1, 3).Value = "Oui" Then
                Cells(i, Int(Rnd() * NbAg + Pcol)).Value = "OT#"
            End If
        ElseIf Cells(i, 3).Value = "Oui" Then
            If Cells(i + 1, 3).Value = "Non" Then
                Cells(i, Int(Rnd() * NbAg + Pcol)).Value = "OT#"
            End If
        ElseIf Cells(i, 3).Value = "Non" Then
            If Cells(i + 1, 3).Value = "Oui" Then
                Cells(i, Int(Rnd() * NbAg + Pcol)).Value = "OT#"
            End If
        Else
    End If
    i = i + incr
    Wend
     
    Etc ...
    Le probleme c'est qu'excel prend bien en compte la condition oui/oui et non/oui mais pas la condition oui/non ...

    Bref si l'un d'entre vous à une idée et je ne doute pas que ça soit le cas je suis preneur. Etant débutant, je prends volontiers tous conseil / remarque / (compliments ... ? ) .

    Merci d'avance chers lecteurs;

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    C'est un problème de logique, dans ta boucle comme elle est faite, si tu as un Oui / Non, le premier test détecte le OUI, le deuxième niveau détecte que ce n'est pas un Oui et sort de ta boucle principale direct, il ne teste jamais la suite.

    Pour le visualiser, démarre ta macro en avance pas à pas avec F8 et continue en pas à pas...

    vois du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub UnePiste()
    Dim I As Byte 'ici
     
    I = 1
    If Cells(I, 3).Value = "Oui" And Cells(I + 1, 3).Value = "Oui" Then
        MsgBox "PloP1"
    ElseIf Cells(I, 3).Value = "Oui" And Cells(I + 1, 3).Value = "Non" Then
        MsgBox "PloP2"
    ElseIf Cells(I, 3).Value = "Non" And Cells(I + 1, 3).Value = "Oui" Then
        MsgBox "PloP3"
    Else
    End If
    End Sub
    cordialement,

    Didier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut
    MERVEILLEUX !

    Exactement ce qu'il me fallait, je pensait pourtant que VBA comprenais ma façon de penser

    Je ne savais pas qu'on pouvais enchainer deux conditions avec "and" ce qui va me faire gagner quelques lignes.

    Un grand merci pour cette solution.

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

Discussions similaires

  1. [AC-2010] Boucle For/Next et While/Wend qui plante Access
    Par Dixies dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/02/2014, 14h07
  2. Programme qui saute des étapes
    Par monski_4 dans le forum C
    Réponses: 3
    Dernier message: 14/06/2011, 17h40
  3. [AC-2003] Boucle While .. Wend sur un recordset qui ne s'execute pas
    Par mamadouabd dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/11/2009, 20h00
  4. [MySQL] Boucle while qui me fait des misères
    Par joboy84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/08/2009, 14h40
  5. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42

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