problème avec instruction do - VB/VBA/VBS - Programmation
Marsh Posté le 28-03-2006 à 16:33:18
Pour commencer ton if Z = Zsol ne sert pas, puique que c'est le principe du do until.
Après tt dépend si ton Z et Zsol sont du texte et du num.
Déclare bien Z et Zsol en num ou en texte...
et normalemen ca devrai marché.
si c du numérique écrit until int(z) = int(zsol).
Marsh Posté le 28-03-2006 à 18:05:09
je comprends pas trop dans les conditions pour les if y'a des fois où ça passe quand je mets pas de int() et des fois où ça passe pas...
y'a une raison?
Marsh Posté le 28-03-2006 à 18:23:37
oui tout dépend si tu as bien déclarer tes variables en numérique.
si oui normalement il n'y apas besoin de le faire.
mais si tu n'as pas déclaré ta variable alors pour lui ca sera du type variant alors il y aura "5" et non 5 par exemple
Marsh Posté le 29-03-2006 à 15:22:16
justement je n'avais rien déclaré en numérique et y'a certaines boucles qui marchaient et d'autres non
celle là marchait:
If Z = Z_sol Then
Cells(NUM_LIGNE, 14).VALUE = Cells(NUM_LIGNE, 9).VALUE
End If
celle là marchait pas:
If Z < Z_sol Then
Cells(NUM_LIGNE, 14).VALUE = Cells(NUM_LIGNE - 1, 9).VALUE / 2 + Cells(NUM_LIGNE, 9).VALUE / 2
End If
je vois pas trop pourquoi... mais bon du coup j'ai tout déclaré "as integer" et ça marche mais ça m'embête de pas comprendre
Marsh Posté le 30-03-2006 à 15:19:10
je nais pas pourquoi, mais de tt facon fauit meix tj tt bien déclaré
Marsh Posté le 30-03-2006 à 15:26:33
si tu n'as pas déclaré c'est comme si tu comparais "du texte"
"cinq" = "cinq" ca peut marché
mais "cinq" < "cinq" ca ne marchera jamais. et comem c'est du type variant il ne te mettra pas de message d'erreur.
Marsh Posté le 30-03-2006 à 15:32:51
pour éviter ca, perso, je cast les types comparés =)
"If Cint(Cells(x,y).Value) > Cint(Cells(z,t).Value Then"
Marsh Posté le 28-03-2006 à 16:18:13
Bonjour,
voilà un bout de mon programme:
Do Until Z = Zsol
NUM_LIGNE = NUM_LIGNE + 1
Z = Cells(NUM_LIGNE, 3).VALUE
MsgBox "Z=" & Z
MsgBox "Zsol=" & Zsol
If Z = Zsol Then Exit Do
Loop
Il y a bien un moment où Z=Zsol (confirmé par les msgbox) pourtant la boucle ne s'arrête pas (je suis obligée de l'arrêter sauvagement)
je ne comprends pas pourquoi si quelqu'un a une idée ce serait cool..
merci d'avance