Page 1 sur 1
erreur

Publié:
28 Mai 2003 à 10:10
par leila
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???
Re: erreur

Publié:
28 Mai 2003 à 10:15
par Raziel
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
Re: erreur

Publié:
28 Mai 2003 à 10:17
par Raziel
Je pense que l'erreur doit venir de la lignetabRes(j) = tCol(i)
Re: erreur

Publié:
28 Mai 2003 à 10:23
par polo
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
Re: erreur

Publié:
28 Mai 2003 à 10:24
par leila
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

Re: erreur

Publié:
28 Mai 2003 à 10:29
par Raziel
Peut tu nous donner le code en entier afin que l'on y jette un oeil ?
Re: erreur

Publié:
28 Mai 2003 à 10:35
par leila
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???
Re: erreur

Publié:
28 Mai 2003 à 10:36
par leila
Merci pour le codeJe l'ai testé mais il y le meme message d'erreur

Re: erreur

Publié:
28 Mai 2003 à 10:47
par Raziel
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.
Re: erreur

Publié:
28 Mai 2003 à 10:49
par leila
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???
Re: erreur

Publié:
28 Mai 2003 à 11:08
par Raziel
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.
Re: erreur

Publié:
28 Mai 2003 à 13:27
par polo
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..