[VB] Une p'tite question con sur un FOR

Une p'tite question con sur un FOR [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 11-07-2006 à 08:27:41    

Salut à tous,  
J'ai un problème tout con : comment sortir d'une boucle for
(enfin pas réellement sortir, pas un "exit for" ) mais comment passer à l'indice suivant
en sautant le reste du code de la boucle suivant le résultat d'un test ?
Je n'arrive pas à trouver sur le Net :pt1cable:
 
Je laisse place au code pour être plus parlant :
 

Citation :

       For IndexFax = 1 To NbClientsFax
 
            Set rstClientFax = dba.OpenRecordset("SELECT * FROM Client WHERE [Code Client]=" & TabDestFax(IndexFax - 1).CodeClient)
 
            If rstClientFax!Contact = vbNullString Then
                'Pas de contact spécifié, on passe au client suivant sans envoyer le fax
                '... INSTRUCTION POUR PASSER AU PROCHAIN IndexFax ???
            End If
 
            Call Fax.SendFax(rstClientFax!Société, rstClientFax!Contact, rstClientFax!Fax, rstClientFax!Ccial, 1, txtPrix)
 
        Next IndexFax


 
Je sais, il me manque sûrement une petite instruction de rien du tout mais je n'arrive pas à trouver
Merci de votre aide
++
 
Seb


Message édité par zeOffspring le 11-07-2006 à 08:29:45
Reply

Marsh Posté le 11-07-2006 à 08:27:41   

Reply

Marsh Posté le 11-07-2006 à 08:43:22    

en C, c'est "continue"

Reply

Marsh Posté le 11-07-2006 à 08:45:14    

autrement, suffit de mettre le reste du code dans le else... ;)

Reply

Marsh Posté le 11-07-2006 à 08:52:13    

Caedes a écrit :

autrement, suffit de mettre le reste du code dans le else... ;)


wé c'est vrai
mais c'est moche :)
y'a surement un équivalent du "continue" non ?

Reply

Marsh Posté le 11-07-2006 à 08:56:40    

zeOffspring a écrit :

wé c'est vrai
mais c'est moche :)
y'a surement un équivalent du "continue" non ?


je vois pas en quoi mettre la suite dans le else est moche :heink:
ce qui est moche, c'est justement un éventuel équivalent d'un continue, car ça rend le programme difficile à suivre ! mais un "else", ça n'a rien de moche


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-07-2006 à 08:59:24    

sinon tu inverses ta condition :

Code :
  1. For IndexFax = 1 To NbClientsFax
  2.    Set rstClientFax = dba.OpenRecordset("SELECT * FROM Client WHERE [Code Client]=" & TabDestFax(IndexFax - 1).CodeClient)
  3.    If rstClientFax!Contact <> vbNullString Then
  4.       Call Fax.SendFax(rstClientFax!Société, rstClientFax!Contact, rstClientFax!Fax, rstClientFax!Ccial, 1, txtPrix)
  5.    End If
  6. Next IndexFax


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-07-2006 à 09:02:06    

oui remarque....
c con mais ça marche  :)

Reply

Marsh Posté le 11-07-2006 à 09:13:37    

sinon tu peux utiliser les goto
 

Code :
  1. For IndexFax = 1 To NbClientsFax
  2.             Set rstClientFax = dba.OpenRecordset("SELECT * FROM Client WHERE [Code Client]=" & TabDestFax(IndexFax - 1).CodeClient)
  3.             If rstClientFax!Contact = vbNullString Then
  4.                 Goto FinFor
  5.             End If
  6.             Call Fax.SendFax(rstClientFax!Société, rstClientFax!Contact, rstClientFax!Fax, rstClientFax!Ccial, 1, txtPrix)
  7.           FinFor:
  8.         Next IndexFax

Reply

Marsh Posté le 11-07-2006 à 09:20:22    

DamienCYS a écrit :

sinon tu peux utiliser les goto


[:karoli]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-07-2006 à 09:31:54    

DamienCYS a écrit :

sinon tu peux utiliser les goto
 

Code :
  1. For IndexFax = 1 To NbClientsFax
  2.             Set rstClientFax = dba.OpenRecordset("SELECT * FROM Client WHERE [Code Client]=" & TabDestFax(IndexFax - 1).CodeClient)
  3.             If rstClientFax!Contact = vbNullString Then
  4.                 Goto FinFor
  5.             End If
  6.             Call Fax.SendFax(rstClientFax!Société, rstClientFax!Contact, rstClientFax!Fax, rstClientFax!Ccial, 1, txtPrix)
  7.           FinFor:
  8.         Next IndexFax



 
 

Citation :

Depuis la révolution de la programmation structurée des années 1970, l'instruction goto n'est guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On utilise plus généralement des structures comme les sauts conditionnels (si .. alors .. sinon ..) ou les boucles (pour, tant que, etc.) qui font partie intégrante de tous les langages de programmation modernes



---------------
██████████████████████████████████
Reply

Marsh Posté le 11-07-2006 à 09:31:54   

Reply

Marsh Posté le 11-07-2006 à 09:32:53    

DamienCYS a écrit :

sinon tu peux utiliser les goto
 

Code :
  1. For IndexFax = 1 To NbClientsFax
  2.             Set rstClientFax = dba.OpenRecordset("SELECT * FROM Client WHERE [Code Client]=" & TabDestFax(IndexFax - 1).CodeClient)
  3.             If rstClientFax!Contact = vbNullString Then
  4.                 Goto FinFor
  5.             End If
  6.             Call Fax.SendFax(rstClientFax!Société, rstClientFax!Contact, rstClientFax!Fax, rstClientFax!Ccial, 1, txtPrix)
  7.           FinFor:
  8.         Next IndexFax



 
 
Oui ça  c'est de la super programmation  [:petrus75]

Reply

Marsh Posté le 11-07-2006 à 11:15:26    

super les gars si vous avez que ca à faire de parcourir les forum sans proposer de solution et critiquer ceux qui en propose

Reply

Marsh Posté le 11-07-2006 à 11:30:55    

ne t'en fais pas Damien, moi je trouve que ton code est po movais, et qui ne fait rien ne peut se tromper ;)

Reply

Marsh Posté le 11-07-2006 à 11:36:10    

DamienCYS a écrit :

super les gars si vous avez que ca à faire de parcourir les forum sans proposer de solution et critiquer ceux qui en propose


j'en ai proposé une hein, et plus propre [:petrus75]
les goto, c'est à oublier ! ça fait partie d'un passé révolu, à l'époque ou les programmes comportaient des numéros de ligne. ça rend le code illisible, crade, chiant à débugger et tout !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-07-2006 à 12:09:09    

Harkonnen a écrit :

j'en ai proposé une hein, et plus propre [:petrus75]
les goto, c'est à oublier ! ça fait partie d'un passé révolu, à l'époque ou les programmes comportaient des numéros de ligne. ça rend le code illisible, crade, chiant à débugger et tout !


 :bounce: Ca y est vous l'avez énervé !! :bounce:

Reply

Marsh Posté le 12-07-2006 à 09:55:53    

et ben moi qui pensait qu'il y avait une instruction pour faire ça
enfin bon j'ai changé mon test et c'est plus simple comme ça
 
merci à tous  :love:

Reply

Marsh Posté le 12-07-2006 à 09:58:43    


le plus simple pour ma part, c'est lorsque tu veux faire sortir de la boucle for, tu mets ton compteur à la valeur juste supérieure à celle de ta boucle, comme ca ton next s'applique, mais tu ne tournes plus dans ta boucle ^^
exemple
for i=1 to 5
if balbla=blabla then
i=6
next i

Reply

Marsh Posté le 12-07-2006 à 10:03:46    

jpcheck a écrit :

le plus simple pour ma part, c'est lorsque tu veux faire sortir de la boucle for, tu mets ton compteur à la valeur juste supérieure à celle de ta boucle, comme ca ton next s'applique, mais tu ne tournes plus dans ta boucle ^^
exemple
for i=1 to 5
if balbla=blabla then
i=6
next i


Ou exit for ca permet de savoir à quelle valeur de i t'es sorti !


Message édité par Paul Hood le 12-07-2006 à 10:04:35
Reply

Marsh Posté le 17-07-2006 à 08:56:46    

jpcheck a écrit :

le plus simple pour ma part, c'est lorsque tu veux faire sortir de la boucle for, tu mets ton compteur à la valeur juste supérieure à celle de ta boucle, comme ca ton next s'applique, mais tu ne tournes plus dans ta boucle ^^
exemple
for i=1 to 5
if balbla=blabla then
i=6
next i


mais c'est un festival ma parole [:mlc]


Message édité par Harkonnen le 17-07-2006 à 08:57:12

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

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