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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  une condition dans un do while qui plante ...

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

une condition dans un do while qui plante ...

n°2010898
@pierre
Posté le 22-07-2010 à 09:39:33  profilanswer
 

Bonjour à tous!
 
je suis un peu ennuyé, je ne comprend pas mon erreur , j'ai une condition dans un while qui retourne  
 
"lindice n'appartient pas à la selection"
 
Je précise que mon classeur possède deux feuilles.
 
voici le bout de code
 

Code :
  1. i=1
  2. Sheets(i).Range("A1" ) = Sheets(i + 1).Name
  3. Sheets(i + 1).Range("A1" ) = "coucou"
  4. Do While ((i <= Sheets.Count()) And (a <> Sheets(i).Name))
  5.     i = i + 1
  6. Loop


 
ce qui est bizarre c'est que les instructions 2 et 3 au dessus fonctionnent et c'est celle là qui plante :
 

Code :
  1. a <> Sheets(i).Name


 
Auriez vous une idée? Merci!


Message édité par @pierre le 22-07-2010 à 09:40:44
mood
Publicité
Posté le 22-07-2010 à 09:39:33  profilanswer
 

n°2010900
dje69r
Arme de distraction massive
Posté le 22-07-2010 à 09:42:34  profilanswer
 

Au moment du plantage, que renvoi i ?


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2010901
@pierre
Posté le 22-07-2010 à 09:43:28  profilanswer
 

euh.. je sais pas trop comment tu peux savoir (je suis débutant ) ?

n°2010902
Arcbitre
J'aime ben ça moi, c'est bon!
Posté le 22-07-2010 à 09:46:12  profilanswer
 

Bonjour,
 
  Les indices de tableaux commencent à 0.  
Dans ta boucle, tu initie i = 1. Sheets(1) correspond à la 2ème feuille de ton classeur.
Lorsque i passe à 2, la feuille N°3 n'existe pas ==> Indice hors de la plage.
 
Démarre avec i = 0. Cela devrait aller mieux.

n°2010905
@pierre
Posté le 22-07-2010 à 09:50:49  profilanswer
 

j'ai compris pourquoi... c'est pas du C... l'instruction  

Code :
  1. a <> Sheets(i).Name

 
plante quand i arrive à la fin , il ne quitte pas le while même si c'est un AND il vérifie les deux... (mal foutu !!) auriez vous une solution donc?


Message édité par @pierre le 22-07-2010 à 09:51:10
n°2010907
@pierre
Posté le 22-07-2010 à 09:54:59  profilanswer
 

Arcbitre a écrit :

Bonjour,
 
  Les indices de tableaux commencent à 0.  
Dans ta boucle, tu initie i = 1. Sheets(1) correspond à la 2ème feuille de ton classeur.
Lorsque i passe à 2, la feuille N°3 n'existe pas ==> Indice hors de la plage.
 
Démarre avec i = 0. Cela devrait aller mieux.


 
euh ... non c'est faux les indices commencent à 1  
 
enfin je vérifie avec mes lignes 2 et 3 et si je met sheets(0) ça plante


Message édité par @pierre le 22-07-2010 à 09:58:11
n°2010913
dje69r
Arme de distraction massive
Posté le 22-07-2010 à 10:02:33  profilanswer
 

Arcbitre a écrit :

Bonjour,
 
  Les indices de tableaux commencent à 0.  
Dans ta boucle, tu initie i = 1. Sheets(1) correspond à la 2ème feuille de ton classeur.
Lorsque i passe à 2, la feuille N°3 n'existe pas ==> Indice hors de la plage.
 
Démarre avec i = 0. Cela devrait aller mieux.

:??:  
 
La 1ere feuille commence a 1
 
 

@pierre a écrit :

euh.. je sais pas trop comment tu peux savoir (je suis débutant ) ?


Bah quand ca plante tu viens en mode debogage, tu mets ta souris sur i, et une infobulle devrait apparaitre te donnant la valeur de i
Ou tu peux aussi faire un  
Debug.Print i  
ou encore MsgBox i
Pour connaitre la valeur
Mais la 1ere solution est qd meme plus simple
 


Message édité par dje69r le 22-07-2010 à 10:03:57

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2010915
Arcbitre
J'aime ben ça moi, c'est bon!
Posté le 22-07-2010 à 10:05:01  profilanswer
 

Ooops, autant, au temps, OTAN pour moi! (Rayez la mention inutile)
 

Code :
  1. i = 1
  2. Sheets(i).Range("A1" ) = Sheets(i + 1).Name
  3. Sheets(i + 1).Range("A1" ) = "coucou"
  4. Do While ((i <= Sheets.Count()))
  5.     If a = Sheets(i).Name Then Exit Do
  6.     i = i + 1
  7. Loop


n°2010917
@pierre
Posté le 22-07-2010 à 10:07:45  profilanswer
 

baaeeeuuu!! c'est sale mais ça marche ! ^^ merci à toi Arcbitre !!

n°2010918
dje69r
Arme de distraction massive
Posté le 22-07-2010 à 10:09:58  profilanswer
 

@pierre a écrit :

baaeeeuuu!! c'est sale mais ça marche ! ^^ merci à toi Arcbitre !!


Ca répond pas a ma question, i renvoi quoi quand ca plante. Si tu ne comprends pas tes erreurs, tu n'avanceras qu'a reculons !! (J'aime cette phrase ! ^^ )
 

Arcbitre a écrit :

Ooops, autant, au temps, OTAN pour moi! (Rayez la mention inutile)
 

Code :
  1. i = 1
  2. Sheets(i).Range("A1" ) = Sheets(i + 1).Name
  3. Sheets(i + 1).Range("A1" ) = "coucou"
  4. Do While ((i <= Sheets.Count()))
  5.     If a = Sheets(i).Name Then Exit Do
  6.     i = i + 1
  7. Loop




Beurk :p

Message cité 1 fois
Message édité par dje69r le 22-07-2010 à 10:10:34

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
mood
Publicité
Posté le 22-07-2010 à 10:09:58  profilanswer
 

n°2010919
@pierre
Posté le 22-07-2010 à 10:12:40  profilanswer
 

dje69r a écrit :


Ca répond pas a ma question, i renvoi quoi quand ca plante. Si tu ne comprends pas tes erreurs, tu n'avanceras qu'a reculons !! (J'aime cette phrase ! ^^ )
 


 
j'ai expliqué plus haut http://forum.hardware.fr/hfr/Progr [...] m#t2010905 pourquoi ça plantais :et  i = 3 au moment du plantage, parce que vba ne quitte pas le while même si la première condition est fausse et que c'est un AND


Message édité par @pierre le 22-07-2010 à 10:14:16

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

  une condition dans un do while qui plante ...

 

Sujets relatifs
FPDF - Affichage sous conditionarray avec une condition
Condition {if} dans un template smarty[Batch] Une condition qui n'est pas vérifiée
Condition, si la requete sql n'affiche rienCondition "IF" qui ne fonctionne pas
Condition de navigateurVB : condition selon l'url d'un WebBrowser
Copier/coller des cellules sous conditionCondition If...End if à l'intérieur d'une boucle For...Next
Plus de sujets relatifs à : une condition dans un do while qui plante ...


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