Je viens demander un peu d'aide, car cet été, l'un de vous (KenDev) m'avait gentiment aidé pour un tableau excel avec une macro.
Or, après l'avoir utilisé sans souci depuis, j'ai depuis une semaine une petite fenêtre qui s'affiche avec le texte ci-dessous.
"erreur d'execution 9" "l'indice n'appartient pas à la sélection"
Je n'ai pourtant rien changé au tableau initial et j'ai beau tenter de comprendre ... rien du tout.
La seule chose à laquelle je pense, c'est que mon tableau contient désormais 6500 lignes, mais c'est tout et je n'ai vraiment aucune certitude quand à la relation.
Si quelqu'un pouvait m'aider à comprendre ou a corriger ce problème, j'en serais ravie.
Je mets en pièce jointe zippée, le tableau avec la macro de Kendev, mail celui ci fonctionne parfaitement, c'est (il me semble) avec 6500 lignes que j'ai cette fenêtre qui s'affiche.
Par contre, lorsque je clique sur "débogage" une autre fenêtre s'ouvre et surligne en jaune une ligne de la macro (je suppose que c'est où il y à le problème), c'est la ligne 89.
Bonjour.
En exécutant la "Comparer_2" (il n'a pas de bouton pour la lancer ?) je n'ai pas eu de plantage.
Donc je ne peux que vous dire de faire ce que j'aurais fait si j'en avais eu un: mettre des espions sur :
i, TbR(i, 1), k, TbR(i, 1) + k, TbB(TbR(i, 1) + k, 1), TbB(TbR(i, 1) + k, 2),
Lbound(TbR, 1), Ubound(TbR, 1), Lbound(TbR, 2), Ubound(TbR, 2), pareil pour TbB.
À +
P.S. En examinant plus attentivement le code (que j'avoue ne pas bien comprendre) je m'aperçois que le risque de plantage est mal testé dans l'instruction qui précède, il faudrait:
VB:
If TbR(i, 1) + k >= LBound(TbB) And TbR(i, 1) + k <= UBound(TbB) Then 'la date existe dans tbb?
À +
P.S.2: Mais moi, tant pour la clarté du code et sa performance que pour limiter ce risque d'erreur, je n'aurais pas fait calculer 4 fois cette expression, j'aurai ajouté en haut une déclaration:
VB:
Dim Ec&, b%, s$, iTbB& 'autres variables
Et j'aurais fait:
VB:
iTbB = TbR(i, 1) + k
If iTbB >= LBound(TbB) And iTbB <= UBound(TbB) Then 'la date existe dans tbb?
For m = TbB(iTbB, 1) To TbB(iTbB, 2) 'pour chaque ligne de la date B
Je te suis reconnaissante de tes conseils, mais au risque de paraître stupide et limitée, peux tu me dire comment je dois faire et surtout où je dois mettre : Dim Ec&, b%, s$, iTbB& 'autres variables
C'est à dire où situe tu "le haut de la déclaration"
Je sais, c'est triste d'en être là, mais je suis perdue et bloquée.
N'as tu donc pas vu qu'il y avait déjà parmi les 10 premères lignes de la procédure une ligne Dim se terminant par le commentaire "'autres variables", à laquelle j'en ai seulement ajouté une de plus ? Mais non, tu n'est pas si nulli que ça...
J'ai testé les deux solutions, la deuxième rebug quelque lignes plus loin. Par contre, la première va jusqu'au bout sans bloquer comme avant, mais les résultats sont faux.
C'est à dire que si je totalise par exemple les OK 0 jour de la page RPH et les OK 0 jour de la page BQ, j'ai une différence d'environ 10 000 euros !
Je ne sais plus quoi faire.
Si le bug n'est pas constant il serait intéressant d'avoir un fichier avec des données le provoquant. Peux tu transmettre un tel fichier ? L'erreur vient probablement de données bizarres ou d'un cas particulier non prévu.
Je te remercie de ta réponse, et je n'ai pas la moindre idée de ce qui provoquait le bug, mais en appliquant la première suggestion de Dranreb, à savoir rajouter un k dans la "formule" ci-dessous pour la partie OK.
If TbR(i, 1) + k >= LBound(TbB) And TbR(i, 1) + k <= UBound(TbB) Then 'la date existe dans tbb?
J'ai, de mon propre chef, fait la même chose pour la partie PROBABLE et tout est rentré dans l'ordre.
Maintenant j'alimente la feuille INDEX au fur et à mesure, c'est du reste à peu près la seule chose que j'arrive à faire
Je te remercie encore et suis désolée d'être passée trop tard.
Je n'ai plus la logique du code en tête (et ai la flemme de m'y replonger si le problème est résolu) mais la correction proposée semble logique effectivement Merci à Dranreb donc.
Bonne continuation dans la construction de l'Index, toujours incomplet ?