L'indice n'appartient pas à la sélection

Bonjour,

Je rencontre un problème que je n'arrive pas à résoudre malgré beaucoup de temps passé pourtant je crois l'avoir déjà rencontré il y a 2 ou 3 ans.

Il s'agit de l'erreur 9- "l'indice n'appartient pas à la sélection"

J'ai un fichier COMPTES.XLSM et un fichier importé de ma banque BANQUE.XLSM tous deux se trouvent ici : C:\CPF\

L' erreur se produit lorsque j'essaie d'importer (onglet: IMPORTATION) mes comptes dans le programme, je choisis une date quelconque dans celles qui sont proposées par le fichier cible (banque.xlsx)

Mon appli arrive à ouvrir le fichier "banque.xlsx" mais ensuite quand on essaie d'y accéder avec la fonction WITH l'erreur qui s'affiche fait penser que le nom de fichier ou l'emplacement est erroné. J'y perds mon latin...

Je joins les 2 fichiers. Merci par avance aux experts.

14comptes.xlsm (289.08 Ko)
7banque.xlsx (13.79 Ko)

Bonjour,

Cela me semble compliqué votre approche

..... mais ensuite quand on essaie d'y accéder avec la fonction WITH....

Quel With ? dans quel code ?

Vous ouvrez votre fichier Compte puis vous exécutez quel code pour importer ? la sub Importerlignes ?

Puis c'est votre bon fichier que vous avez placé ?

Bonjour Dan et merci,

En effet je n'ai sans doute pas été très clair, je vais essayer de l'être davantage...

Quand je veux importer des comptes, je vais sur l'onglet "IMPORTATION" puis je clique dans le calendrier affiché sur la date de début importation puis la date fin d'importation. Jusque là tout va bien. Ensuite le programme affiche "dates d'importation: Entre date1 et date2" dans une boite de dialogue avec 3 choix.

Si on clique sur "oui" alors l'erreur 9 apparait car on est à ce moment (lorsqu'on confirme les dates d'importation) dans la feuille 9 (onglet feuille 9) et le code de cette feuille comprend l'instruction : "Call ImporterCompteBancaire" et cette procédure contient l'appel : "Call ComptageNbreDeLignesAInserer" et c'est dans cette procédure que l'on trouve l'instruction qui produit le défaut. Cette instruction est: "With Workbooks("C:\CPF\banque.xlsx").Worksheets("banque")"

Finalement tout se passe comme si j'utilisais le mauvais nom de fichier ou le mauvais nom de sheets ou un mauvais chemin. Mais j'ai vérifié tout cela dix fois au moins, alors... Je ne sais pas...Merci encore par avance.

Bonjour,

Dans la macro ImporterLigne, Le classeur étant ouvert il est inutile de spécifier le nom de chemin ::mettre :

With Workbooks("banque.xlsx").Worksheets("banque"

ça devrait suffire... Enfin chez moi ça ne provoque plus d'erreur ! Et cerise sur le gâteau les données sont correctement importée.

A+

Bonjour à tous les deux,

Lorsqu'on valide la plage choisie (dates), le fichier "Banque.xlsx" n'est pas ouvert. Il est donc normal que vous ne puissiez pas utiliser une feuille de ce fichier. C'est votre erreur 9. Pour la corriger, vous devez commencer par ouvrir le fichier Banque.xlsx.

A la 1ère erreur, remplacez :

With Workbooks("C:\CPF\Banque.xlsx").Sheets("Banque")

par :

    Dim wS As Worksheet

    Workbooks.Open "C:\CPF\Banque.xlsx"
    Set wS = ActiveWorkbook.Sheets("Banque")
    wS.Activate
    With wS 
etc.

Ensuite, faites la même chose sur les 4 procédures où on trouve la même erreur, mais puisque le fichier banque est déjà ouvert, sans la ligne :

Workbooks.Open "C:\CPF\Banque.xlsx"

Pour terminer modifiez également votre code à la fermeture du classeur.

Le plus important :

Plusieurs remarques sur votre code qu'il faudrait que vous corrigiez au plus vite pour ne pas prendre de mauvaises habitudes.
1) paramétrez votre interface de développement VBE en cochant "Déclaration obligatoire des variables". Cela signifie que tout votre code est à re-écrire. C'est long, mais vous serez gagnant sur la ligne d'arrivée.
2) vous avez déclaré une quantité astronomique de variables comme "Public". C'est ce qu'il y a de pire, parce que les variables ne se vident jamais de leur dernier contenu. Catastrophe assurée parce que les résultats peuvent être faux sans que vous le sachiez.
3) Puisque j'ai trouvé votre erreur dans 6 procédures, cela signifie que vous avez tapé votre code au kilomètre. Il faut progresser "en tirailleur", pas à pas, et corriger les erreurs immédiatement avant de passer à la suite.

Bonjour,

Vu que d'autres vous ont répondu, je suppose que vous avez votre réponse à votre demande

Si besoin dites-moi

Pensez à

cordialement

Bonjour à tous et merci pour vos réponses très enrichissantes je vais essayer tout cela de ce pas et je ne manquerai pas de vous donner des nouvelles ensuite et ce, dans tous les cas. Mais vu les réponses manifestement éclairées, je ne doute pas dans un 1er temps de résoudre mon erreur.

Je vais aussi dans un second temps, mais rapidement tenir compte des conseils d' écriture. Merci à Optimix.

A très vite...

Re bonjour à tous,

Et bien sûr, cela marche !

1000 merci à Optimix, Dan et Galopin01 pour votre aide précieuse mais je n'avais pas de doute, en clair moi aussi j'étais optimix !

A bientôt les amis

Rechercher des sujets similaires à "indice appartient pas selection"