Pb avec ma boucle while .... Synthaxe sans doute [VBA] - Programmation
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  
 
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
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 ? 
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 
Marsh Posté le 15-01-2002 à 11:02:54
a bon   
  
 
be alors je vais faire comme ca... 
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 :   | 
 
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]
Marsh Posté le 16-01-2002 à 10:47:21
ouai c bon j'ai compris   
  
 
merci   au moins je sais pkoi il me faisait ca
  au moins je sais pkoi il me faisait ca 
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: