erreur

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

erreur

Messagepar leila » 28 Mai 2003 à 10:10

Lorsque j'execute la boucle suivante For i =0 To Ubound(tCol) For indice = 0 To Ubound(ListeColonne) If tCol(i) = ListeColonne(indice) Then tabRes(j) = tCol(i) j = j + 1 End If Next NextJ'obtiens un message d'erreur qui est : "Subscript out of range"Je n'arrive pas a comprendre ce que ca veut dire et ou se trouve ma fauteQuelqu'un pourrait-il m'aider???
leila
 

Re: erreur

Messagepar Raziel » 28 Mai 2003 à 10:15

Salut,cela veux dire qui tu essaies d'accéder à un indice qui est hors du tableau. Vérifie la taille de ton tableau et regarde si tu ne fais pas une boucle de trop
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: erreur

Messagepar Raziel » 28 Mai 2003 à 10:17

Je pense que l'erreur doit venir de la lignetabRes(j) = tCol(i)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: erreur

Messagepar polo » 28 Mai 2003 à 10:23

Il se peut que ton tableau ne commence pas à l'indice 0.essaie plutot ca :For i =Lbound(tCol) To Ubound(tCol)For indice = Lbound(tCol) To Ubound(ListeColonne) If tCol(i) = ListeColonne(indice) Then tabRes(j) = tCol(i) j = j + 1End IfNext indiceNext i
polo
 

Re: erreur

Messagepar leila » 28 Mai 2003 à 10:24

salut Raziel,oui en effet, l'erreur vient de cette ligne mais je ne comprends pas trop pourquoi....Les indices sont corrects a mon avis...Mais je ne sais pas comment traiter les débordements en fait.... je bloque dessus :)
leila
 

Re: erreur

Messagepar Raziel » 28 Mai 2003 à 10:29

Peut tu nous donner le code en entier afin que l'on y jette un oeil ?
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: erreur

Messagepar leila » 28 Mai 2003 à 10:35

ok, voila le codedim tCol() as Stringdim tabRes() as Stringdim ListeColonne() as string i = 0 'indice de parcours de tCol indice = 0 ' indice de parcours de ListeColonne j = 1 ' indice de parcours de tabRes Redim tabRes(maxcols) As String Redim tCol(maxcols) As String Redim ListeColonne(TotalColonne) As String For i =Lbound(tCol) To Ubound(tCol) For indice = Lbound(tCol) To Ubound(ListeColonne) If tCol(i) = ListeColonne(indice) Then tabRes(j) = tCol(i) j = j + 1 End If Next indice Next ien fait, dans mon exemple, maxcols (nbre de colonnes a selectionner) = 5 et TotalColonne (qui est le nbre de colonne de la vue) = 14et lorsque j'execute la boucle, le message d'erreur apparait au bout de 13 execution de la boucle... pourquoi???
leila
 

Re: erreur

Messagepar leila » 28 Mai 2003 à 10:36

Merci pour le codeJe l'ai testé mais il y le meme message d'erreur :(
leila
 

Re: erreur

Messagepar Raziel » 28 Mai 2003 à 10:47

Salut,Je pense que ton pb proviens de l'initialisation à 1 de ta varaible J. Je m'explique.Dans ton cas, maxcols = 5. Donc quand tu déclaresRedim tabRes(maxcols) As String<=>Redim tabRes(5) As String et donc de déclarer un tableau de 6 éléments numéroté de 0 à 5Or, lorsque tu initialise J à 1 (j étant ta variable de parcours de tabRes), tu occulte l'élément 0 de ton tableau. Par conséquent, tu ne peux plus stocker que 5 valeur (inde 1 à 5) au lieu de 6.Initialise J à 0 et je pense que cela devrait fonctionner.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: erreur

Messagepar leila » 28 Mai 2003 à 10:49

j'ai fait ce que tu m'a di mais ca ne marche trjrs pasIl n'y aurait pas une exception a traiter par hasard, comme par exemple un débordement ou qqchose comme ca???
leila
 

Re: erreur

Messagepar Raziel » 28 Mai 2003 à 11:08

Il y aurai moyen de tester le débordement mais cela ne corrigerai pas ton pb.Il y a un truc qui me semble dangereux dans ton code. En effet, comme tCol et tabRest ont la même taille, on n'a donc comme postulat de départ le fait que tabRest ne peux pas avoir plus d'élément de tCol.Or, je pense que ton tableau ListeColonne contient le titre de tes colonnes.Si c'est le cas, as tu vérifié que ce tableau ne contient pas de doublon (du fait de 2 colonnes qui porterai le même nom) ?L'erreur ne vient pas du code que tu as envoyé (excepté le fait d'initialiser J à 1 : il faut bien l'initialiser à 0).Je pense qu'il se passe la chose suivante : Dans ta seconde boucleFor indice = Lbound(tCol) To Ubound(ListeColonne)....Nextla condition tCol(i) = ListeColonne(indice) doit au moins être vrai à deux reprise et donc, pour un Indice de tCol, tu rempli au moins deux cases de tabRest.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: erreur

Messagepar polo » 28 Mai 2003 à 13:27

Dans ce cas je te conseille, d'executer le code avec le déboggeur.<fichier><outils><deboguer lotusScript> en V6.sinon <fichier><outils><mettre au point LotusScript> en V5Il doit y avoir un probleme dans la structure de ta liste..
polo
 


Retour vers Développement

cron