Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Boucle qui ne fonctionne pas

DonBeuBeu

XLDnaute Junior
Salut à tous!

J'ai un petit souci sur une boucle:

Do While M <> N = True

Les lettres M et N ont pour valeur: N=0 (au début), et M soit 1 soit 4 (fixe), la lettre N va venir être incrémenté en fin de programme de +1 et je veux que lorsque N=M il passe à autre chose... Or là la boucle ne s'active pas et le programme saute la boucle directement... j'pige pas ^^'

Merci d'avance
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : [VBA] Boucle qui ne fonctionne pas

Bonjour
Enlevez le "= True"
Il aurait été complètement absurde, même si la priorité des opérateurs avait été telle que vous le pensiez.
Mettez vous bien dans la tête qu'une comparaison constitue en elle même une expression de type Boolean.
L'expression M <> N vaut soit True soit False. Elle n'est pas seulement utilisable dans un If: vous pouvez aussi l'affecter à une variable déclarée As Boolean. Inversement vous pouvez utiliser une telle variable comme condition dans un If, il n'y a pas lieu d'utiliser d'opérateur de comparaison avec.
Car il est toujours absurde de comparer une expression Boolean à True, parce que ça vaut toujours exactement la même chose que l'expression elle même !
(True = True) vaut True, et
(False = True) vaut False, donc
((M <> N) = True) vaut (M <> N) tout simplement. Et là en plus il évaluait
(M <> (N = True)) (pour que vous compreniez pourquoi ça ne marchait pas)
Un Boolean est converti en numérique quand il est comparé à un numérique. False donne 0 et True donne -1 !
Cordialement.
 
Dernière édition:

DonBeuBeu

XLDnaute Junior
Re : [VBA] Boucle qui ne fonctionne pas

Re!

Merci pour vos réponse... Mais sa ne marche pas =\ Le fichier pèse 9 Mo j'vais vous mettre le code entier au fur et à mesure:

Pas important


Début de la boucle + programme à répéter tant que la condition n'est pas vérifier
(La variable A est défini autre part )


La fin est intéressante avec l'incrément des coordonées (A) et du N

Puis une 2 ème partie qui ne concerne pas mon problème... Pour l'instant ^^'



En amont de ce programme une userbox dont voici le programme:
(La partie "Introduction des IF" est particulièrement importante...)


Voilà vous savez tout! Je coince toujours autant surtout que j'avais testé ce genre de boucle sur des petits programmes et sa marchait parfaitement bien (y compris en rajoutant le "= True" à la fin)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : [VBA] Boucle qui ne fonctionne pas

Mettez un point d'arrêt sur le Do While et des espions sur M, sur N et sur M <> N, qu'est ce que vous voulez que je vous dise
ou juste avant le Do While un MsgBox "M = " & M &vblf & "N = " & N & vblf & "M <> N = " & (M <> N)
 

DonBeuBeu

XLDnaute Junior
Re : [VBA] Boucle qui ne fonctionne pas

J'ai changé les M en B, je me suis rendu compte que j'utilisais 2 fois M pour 2 choses différentes...

Le MsgBox c'est pas trop possible, en ce qui concerne les espions et points d'arrêts je ne vois de quoi tu parle sorry =\
 

Orodreth

XLDnaute Impliqué
Re : [VBA] Boucle qui ne fonctionne pas

Re,

Dans VBE, quand tu es dans ton code, si tu sélectionnes une variable, le menu contextuel (clic droit de la souris) t'offre la possibilité d'ajouter un espion.

L'espion s'affiche dans une fenêtre qui te permet, en débogage, et donc en éxécution pas à pas, de savoir où en est la valeur de ta variable à tout instant dans ta procédure.
Très pratique.

Petit conseil: nomme tes variables correctement. A, B, M, N, ça va 5 minutes, mais quand tu veux faire un code propre et maintenable, il vaut mieux préférer des variables au nom explicite.
On s'y retrouve beaucoup plus facilement, et ça évite le problème que tu viens d'avoir.
 

DonBeuBeu

XLDnaute Junior
Re : [VBA] Boucle qui ne fonctionne pas

J'ai renommé mes variables, le soucis n'a pas l'air de venir de la... Petite question est-ce que les variables dans la userform sont conservés lorsque je passe sur le module?



Je vais tenter d'alléger le fichier et de l'envoyer...

Merci pour votre aide!

Edit: Fichier allégé joint
 

Pièces jointes

  • Sans titre.jpg
    34.2 KB · Affichages: 47
  • Sans titre.jpg
    34.2 KB · Affichages: 51
  • RO.xlsm
    122.5 KB · Affichages: 33
Dernière édition:

DonBeuBeu

XLDnaute Junior
Re : [VBA] Boucle qui ne fonctionne pas

Merci à tous pour votre aide, comme je le pensais les variables n'était pas retenu, j'ai mis le 2nd code à la suite et sa marche impeccable

Merci encore, bonne journée à tous!
 

Jam

XLDnaute Accro
Re : [Résolu] Boucle qui ne fonctionne pas

Salut DonBeuBeu, le forum,

Point important à ne surtout pas négliger dans un programme: les variables ! Ce sont elles qui "véhiculent" l'information. Leur définition et leur portée (où elles sont accessibles -> le programme, le module, la procédure, etc...) est particulièrement important. Non seulement leur nommage comme le souligne Orodreth est important pour s'y retrouver dans un listing, mais leur définition est tout aussi important.
N'hésite pas à jeter un œil dans l'aide (Dim, Public, Static...).

Bon courage.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…