Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 23h43   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : 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
Points : 16
Points : 16
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 :
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;
PolyAmide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 00h13   #2
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 682
Points : 4 682
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 :
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
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 23/08/2011, 21h34   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : 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
Points : 16
Points : 16
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.
PolyAmide est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h52.


 
 
 
 
Partenaires

Hébergement Web