[VBA] Pb avec ma boucle while .... Synthaxe sans doute

Pb avec ma boucle while .... Synthaxe sans doute [VBA] - Programmation

Marsh Posté le 15-01-2002 à 09:28:49    

voila j'aimerais faire ca
 
While ((rangdumois = OccuranceMatricule(matricule, F_JANVIER,rangdumois))<> 0)
            .... le reste
Wend
 
mais ca ne marche pas rangdumois ne change pas, c'est comme si ma focntion ne retournais rien, alors j'ai essayé ca :
 
While (OccuranceMatricule(matricule, F_JANVIER,rangdumois)<> 0)
            rangdumois = OccuranceMatricule(matricule, F_JANVIER, rangdumois)
            .... le reste
Wend
 
la ca marche mais je fais 2 fois l'appel a la fonction OccuranceMatricule pour rien, et comme j'essaye d'optimiser mon code ...
 
Donc, pkoi ca me fait ca ?

 

[edtdd]--Message édité par olicel--[/edtdd]


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 15-01-2002 à 09:28:49   

Reply

Marsh Posté le 15-01-2002 à 09:42:14    

Je suis pas un specialiste VB,mais essaye un truc du gengre
 
do
 rangdumois = OccuranceMatricule(matricule, F_JANVIER,rangdumois)
while(rangdumois=0)
 
je sais meme pas si le do...while existe en VB :??:


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
Reply

Marsh Posté le 15-01-2002 à 09:44:41    

ouai ca marche mais je vais faire un tour de trop dans ma boucle la ? j'essaye 2sec


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 15-01-2002 à 09:55:23    

be voila ca marche mais fo que je fasse ca alors mais ca me fait deux conditions... mais bon c deja beaucoup mieux que deux fois ma fonction, qui est longue en plus ...
 
Bon si j'ai pas d'autre sol je fais ca mais j'aurais aimé comprendre pkoi ce VBA de merde(parce que vraiment ca pu) me fait ca. Avant je faisais du C++, c carrement plus clair comme language
 
alors ma solution ?


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 15-01-2002 à 10:55:10    

Solution standard VB :
 
rangdumois = OccuranceMatricule(matricule, F_JANVIER, rangdumois)
While (rangdumois <> 0)
           
           .... le reste
           rangdumois = OccuranceMatricule(matricule, F_JANVIER, rangdumois)
Wend


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 15-01-2002 à 11:02:54    

a bon  :??:  
 
be alors je vais faire comme ca...


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 16-01-2002 à 10:21:25    

En C tu as 2 opérateurs (= et ==) pour les opérations d'initialisation et de test d'égalité.
En VBA seul l'opérateur = existe pour ces deux opérations.
Dans le cadre d'une instruction While, VBA ne doit pas interpréter = comme une initialisation !
Donc ta formule

Citation :


While ((rangdumois = OccuranceMatricule(matricule, F_JANVIER,rangdumois))<> 0)


n'est pas interprétée comme l'affectation d'une valeur retournée par la fonction, puis sa comparaison à 0 mais comme la comparaison entre rangdumois et le résultat de ta fonction, puis entre le résultat de cette première comparaison et 0.
 
J'espère avoir été clair :)
 
A+

 

[edtdd]--Message édité par sylderon--[/edtdd]

Reply

Marsh Posté le 16-01-2002 à 10:47:21    

ouai c bon j'ai compris  :pt1cable:  
 
merci  :jap:  au moins je sais pkoi il me faisait ca


---------------
toujours un petit mot gentil:
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed