Boucle Do while qui ne marche pas

tomethod Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, si quelqu'un peu m'aider cette boucle ne marche pas. Elle s'arrete des que je rencontre une valeur différente de 0 en colonne 1

Sub TEST()
'numéro de la première ligne du calcul
ligne = 1

'boucle tant que cells(ligne,1)=0 go to ligne+1 jusqu'à 49

Do While Cells(ligne, 1) = False And ligne < 50
ligne = ligne + 1

'test si cellule1 < cellule2 alors cellule5="valide"
If Cells(ligne, 1).Value < Cells(ligne, 2).Value Then
Cells(ligne, 5) = "valide"

End If
Loop

MsgBox (ligne)

End Sub


2 réponses

vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
en même temps c'est normal qu'elle s'arrête quand elle rencontre autre chose que 0 puisque tu lui as dis de le faire... (cf: cells(ligne,1)=0 )

d'ailleur pourquoi tu as mis cells(ligne,1)=FALSE au lieu de 0 comme dans ton commentaire ???
0
tomethod Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
désolé je suis débutant merci pour cet éclairage, que devrais-je modifier pour que cela marche?
Concerant la déclaration false, je ne sais pas j'ai vu qu'elle était égale a 0 tout simplement.
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
et bien, dit moi tout simplement (avec des mots simple) ce que tu veux faire, je te ferais un test booléen correct :)
concernant l'utilisation du TRUE et FALSE, essaye de les utiliser seulement pour des test booléen (imagine ce que ça donnerais si tu comparait une lettre à FALSE ...)
0
tomethod Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
je souhaite effectuer un test qui compare une valeur à une autre fixe et qui si elle est inférieur inscrit sur la même ligne dans une autre colonne "valide",mon problème principale est que si je compare une cellule vide à une donnée fixe ademmetons 5 le test serait toujours vrai dès que la cellule est vide hors je souhaite que le test se passe des cellules vide et ne se fasse une annotation "valide" que sur les cellules ayant une donnée inférieur ou supérieur "non valide" à ma donnée fixe.



Si vous pouvez m'aider en utilisant le même mode de rédaction que le mien cela me serait grandement profitable le but étant de comprendre mes erreurs et apprendre à me débrouiller seul.



Par avance merci
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
bon, qu'est ce qui te permet de dire que tu veux arréter d'écrire valide ou non valide ? est ce une cellule vide ? une certaine valeur ?
0
tomethod Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
c'est lorsque la cellule est vide ou du moins égal a 0 je pense. Le test tel que je souhaite réaliser comparerai les données dans une colonne contenant des dates et des cellules vide a une autre date(celle du jour) et lorsqu'il y aurai une valeur dans la colonne inférieur à la date référence(celle du jour) alors je pourrai inscrire valide sinon je passe à la cellule suivante. C'est la tout mon problème puisque toute cellule vide est inférieur à la date du jour "cells(12,7).value" la date étant une valeur numérique dans excel je bugg.



Désolé si je ne suis pas assez clair.
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
là tu as ta réponse :)
"c'est lorsque la cellule est vide ou du moins égal a 0 je pense"
donc d'un coté tu as ta boucle qui permet de parcourir tes cellules
While ((Cells(ligne, 1) <> "" And Cells(ligne, 1) <> "0") or (Cells(ligne, 2) <> "" And Cells(ligne, 2) <> "0"))  'on vérifie la date de la première colonne mais aussi de la seconde (au cas où)

wend

d'un autre coté tu as ton test qui permet de savoir dans quel cas écrire ton valide ou non valide
'test si cellule1 < cellule2 alors cellule5="valide"
If Cells(ligne, 1).Value <= Cells(ligne, 2).Value Then
Cells(ligne, 5) = "valide"
else
Cells(ligne, 5) = "non valide"
End If
ligne = ligne + 1

il ne te reste plus qu'à mettre le if dans le while et ça devrais le faire
remarque que j'ai rajouté un = dans la condition du if ainsi qu'une incrémentation de ligne a la fin.
0