Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Chalafraiz

XLDnaute Nouveau
Bonjour à tous,

Je rencontre actuellement un problème dans le déroulement d'une macro. J'ai deux tableurs Excel de format identique, avec les mêmes macros, mais des données différentes.
La macro qui me pose problème fonctionne très bien dans mon premier fichier, mais pas dans le deuxième, d'où le fait que je ne comprends pas tellement le soucis...

Je précise que ce ne sont pas des macros que j'ai écrit, que je sais qu'elles ne sont pas bien codées mais qu'on m'a demandé de régler le problème rapidement, et cela me demanderait trop de temps de les retaper entièrement... (mais je compte le faire après)

Bref, à la ligne en gras, j'ai l'erreur 9 : l'indice n'appartient pas à la sélection.

Code qui fonctionne
Public Const Repname = "2014-2019 Budget 1.xlsm"
---------------------------
Sub Process_Finance()
' Local site declarations
' Location of the BAT file that lists all of the data files

BatFile = "j:\...\listfile.bat"
' Data directory holding all of the input files
DataDir = "j:\...\data_files"
' Text file containing list of files location and it's name
TextFile = "j:\...\datafile.txt"

' run the listfil.bat
aa = Shell("j:\...\listfile.bat", 1)

(code pour attendre quelques secondes que le .bat s'exécute)

Dim fil(100)

' setup a loop for all of the files found in the declared data folders

For teams = 1 To 1
Select Case teams
Case 1 ' all other cases removed

opendir = DataDir
TeamName = "DATA"
listfil = TextFile
listfilc = "datafile.txt"

Workbooks.OpenText Filename:=listfil

rowww = 1
While Cells(rowww, 1).Value <> ""
fil(rowww) = Cells(rowww, 1).Value
rowww = rowww + 1​
Wend
rowww = rowww - 1
Workbooks(listfilc).Close savechanges:=False​

End Select
[...]

Code qui ne fonctionne pas
Public Const Repname = "2014-2019 Budget 2.xlsm"
---------------------------
Sub Process_Finance()
' Local site declarations
' Location of the BAT file that lists all of the data files

BatFile = "j:\...\listfile.bat"
' Data directory holding all of the input files
DataDir = "j:\...\data_files"
' Text file containing list of files location and it's name
TextFile = "j:\...\datafile.txt"

' run the listfil.bat
aa = Shell("j:\...\listfile.bat", 1)

(code pour attendre quelques secondes que le .bat s'exécute)

Dim fil(100)

' setup a loop for all of the files found in the declared data folders

For teams = 1 To 1
Select Case teams
Case 1 ' all other cases removed
opendir = DataDir
TeamName = "DATA"
listfil = TextFile
listfilc = "datafile.txt"

Workbooks.OpenText Filename:=listfil

rowww = 1
While Cells(rowww, 1).Value <> ""
fil(rowww) = Cells(rowww, 1).Value
rowww = rowww + 1​
Wend
rowww = rowww - 1
Workbooks(listfilc).Close savechanges:=False​

End Select
[...]

L'erreur se pose souvent mais PARFOIS elle n’apparaît pas. J'ai essayé de rajouter
With Workbooks("datafile").Sheets("datafile")
sans succès. J'ai cru comprendre en lisant quelques fils que cela pouvait venir du tableau, mais dans ce cas pourquoi cela fonctionne très bien dans le premier et pas dans l'autre ?

Pour info, le .bat créé un fichier .txt qui écrit sur chaque ligne le nom de fichiers Excel, puis on ouvre ce .txt dans Excel qui met ces noms dans la première colonne. La première cellule de la colonne n'est pas vide.

Merci d'avance pour votre aide, et désolée de ne pouvoir fournir de document.

Cha
 

Misange

XLDnaute Barbatruc
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Bonjour

Quel est la différence entre ton code qui fonctionne et code qui ne fonctionne pas ??? A moins que je n'aie pas bien vu, tu as copié deux fois le même avec juste une ligne en gras dans l'un mais identique à l'autre.

Quel est l'intérêt de faire un select case avec un seul case et une boucle avec un seul tour ?
 

vgendron

XLDnaute Barbatruc
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Bonjour,
comme ca. difficile de répondre surtout qu'on ne sait rien des fichiers bat et txt..

lance les macros en mode pas à pas (alt +F11 pour ouvrir l'éditeru VBA
puis, clique dans la macro et touche F8
et regarde la ou ca plante. ou pas.
 

Chalafraiz

XLDnaute Nouveau
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Bonjour

Quel est la différence entre ton code qui fonctionne et code qui ne fonctionne pas ??? A moins que je n'aie pas bien vu, tu as copié deux fois le même avec juste une ligne en gras dans l'un mais identique à l'autre.

Quel est l'intérêt de faire un select case avec un seul case et une boucle avec un seul tour ?

Bonjour
C'est bien cela le problème ! Ce sont les mêmes codes, et seul un fonctionne... J'ai copié collé les deux histoire de voir si vous voyiez des différences que je ne voyais pas, mais comme je le pensais il n'y en a pas.

Apparemment il y avait avant d'autre case dans le select case mais ils ont été retirés. Comme je l'ai (légèrement) dit, les codes sont très mal faits, peu de variables déclarées, beaucoup de variables secondaires inutiles (comme le listfil), et leur réfection serait très longue, alors qu'on me demande de régler cela rapidement...

vgendron : Je sais bien, mais comme je l'ai dit le .bat créé un fichier .txt qui liste des noms de fichiers, qu'on ouvre ensuite via excel pour copier la liste sur une colonne et plusieurs lignes.

J'ai effectué le mode pas à pas. Cela plante uniquement dans la macro 2 à la ligne en gras. J'ai essayé de rajouter un with au cas où le problème vienne de cells(roww, 1) (étant donné que l'erreur 9 indique souvent qu'il ne trouve pas le tableur ou la feuille), et cela a fonctionné, puis après enregistrer + réouvrir le document, cela plante encore.

Et comme je l'ai aussi dit, parfois l'erreur ne se présente pas et la macro tourne sans problème (c'est rare). A n'y rien comprendre...
 

vgendron

XLDnaute Barbatruc
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

moi,
la SEULE différence que je vois. c'est à la première ligne
Public Const Repname = "2014-2019 Budget 2.xlsm"
Public Const Repname = "2014-2019 Budget 1.xlsm"

Budget 1 ou 2...
 

Chalafraiz

XLDnaute Nouveau
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Oui, qui donne le nom des fichiers... Bon, tant pis :/ si quelqu'un à une idée sur ce qui pourrait causer ce type de dysfonctionnement je suis toute ouïe.

En tout cas merci à vous deux pour vos réponses. Je vais bosser sur la réfection des codes, et qui sait, peut être qu'après Excel sera moins capricieux ! Tant pis pour les délais... Ce ne sont pas mes codes, et je ne vois vraiment pas ce qui peut causer ce problème...
 

vgendron

XLDnaute Barbatruc
Re : Erreur 9 : l'indice n'appartient pas à la sélection - aléatoire

Une idée comme ca. à tout hasard
vu que tu as deux fichiers xlsm, budget 1 et budget 2..
peut etre ouvres tu les deux en meme temps..
peut etre que la première macro qui "fonctionne" ouvre des .txt
l'autre qui ne fonctionne pas, n'aime pas ouvrir des fichiers déjà ouverts???

et quand tu ouvres des deux xlsm séparemment, c'est la que ca ne plante plus.. ???

bref. bon courage ;-)