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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1404332
zeOffsprin​g
Posté le 11-07-2006 à 08:27:41  profilanswer
 

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
mood
Publicité
Posté le 11-07-2006 à 08:27:41  profilanswer
 

n°1404335
Caedes
Posté le 11-07-2006 à 08:43:22  profilanswer
 

en C, c'est "continue"

n°1404337
Caedes
Posté le 11-07-2006 à 08:45:14  profilanswer
 

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

n°1404341
zeOffsprin​g
Posté le 11-07-2006 à 08:52:13  profilanswer
 

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 ?

n°1404345
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-07-2006 à 08:56:40  profilanswer
 

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)
n°1404346
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-07-2006 à 08:59:24  profilanswer
 

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)
n°1404348
zeOffsprin​g
Posté le 11-07-2006 à 09:02:06  profilanswer
 

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

n°1404354
DamienCYS
Posté le 11-07-2006 à 09:13:37  profilanswer
 

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

n°1404357
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-07-2006 à 09:20:22  profilanswer
 

DamienCYS a écrit :

sinon tu peux utiliser les goto


[:karoli]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1404366
tabouret e​n bois
Profil:s de pute
Posté le 11-07-2006 à 09:31:54  profilanswer
 

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



---------------
██████████████████████████████████
mood
Publicité
Posté le 11-07-2006 à 09:31:54  profilanswer
 

n°1404368
gatsu35
Blablaté par Harko
Posté le 11-07-2006 à 09:32:53  profilanswer
 

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]

n°1404444
DamienCYS
Posté le 11-07-2006 à 11:15:26  profilanswer
 

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

n°1404458
jpcheck
Pioupiou
Posté le 11-07-2006 à 11:30:55  profilanswer
 

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

n°1404463
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-07-2006 à 11:36:10  profilanswer
 

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)
n°1404509
Paul Hood
Posté le 11-07-2006 à 12:09:09  profilanswer
 

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:

n°1405257
zeOffsprin​g
Posté le 12-07-2006 à 09:55:53  profilanswer
 

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:

n°1405258
jpcheck
Pioupiou
Posté le 12-07-2006 à 09:58:43  profilanswer
 


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

n°1405265
Paul Hood
Posté le 12-07-2006 à 10:03:46  profilanswer
 

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
n°1407832
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-07-2006 à 08:56:46  profilanswer
 

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)

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

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

 

Sujets relatifs
phpMyAdmin : question de fonctionnementPetite question sur les .CAB
Petite questionQuestion debutant ...
[Access]Question sur création de tablequestion bizarre résolu !
Question Dailymotion ?[batch DOS] boucles FOR imbriquées
[RESOLU très vite]Question simple sur les méthodes[RESOLU] [Shell] question de laisse
Plus de sujets relatifs à : [VB] Une p'tite question con sur un FOR


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR