Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3048 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème avec instruction do

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec instruction do

n°1333792
elgobi
Posté le 28-03-2006 à 16:18:13  profilanswer
 

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

mood
Publicité
Posté le 28-03-2006 à 16:18:13  profilanswer
 

n°1333803
lhonolulu
Posté le 28-03-2006 à 16:33:18  profilanswer
 

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).

n°1333819
elgobi
Posté le 28-03-2006 à 16:49:24  profilanswer
 

merci ça marche...

n°1333924
elgobi
Posté le 28-03-2006 à 18:05:09  profilanswer
 

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?

n°1333943
lhonolulu
Posté le 28-03-2006 à 18:23:37  profilanswer
 

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

n°1334633
elgobi
Posté le 29-03-2006 à 15:22:16  profilanswer
 

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

n°1335587
lhonolulu
Posté le 30-03-2006 à 15:19:10  profilanswer
 

je nais pas pourquoi, mais de tt facon fauit meix tj tt bien déclaré

n°1335597
lhonolulu
Posté le 30-03-2006 à 15:26:33  profilanswer
 

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.

n°1335608
kennybis
SeiGneuR des SaiGneuRz - SaiGn
Posté le 30-03-2006 à 15:32:51  profilanswer
 

pour éviter ca, perso, je cast les types comparés =)
 
"If Cint(Cells(x,y).Value) > Cint(Cells(z,t).Value Then"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problème avec instruction do

 

Sujets relatifs
Problème avec un onblur...[résolu] Problème bouton / javascript
Problème de ponctuation ds un fichier texte dynamique ds flashProblème Validation css
Probleme de cryptage de mot de passeProbleme pour Modifier mon formulaire
[resolu]Problème d'alignementProbleme de taille de structure avec char[] et double
Probleme avec l'instruction ORDER BYProbleme avec l'instruction system du C++
Plus de sujets relatifs à : problème avec instruction do


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)