Problème execution d'une macro

Nullita

XLDnaute Nouveau
Bonjour,

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.

Cordialement

Nulli
 

Nullita

XLDnaute Nouveau
Re : Problème execution d'une macro

Bonjour TempusFugit

Oui, c'est tout à fait cette discussion là !

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.

Cordialement

Nulli
 

Pièces jointes

  • Pointage TER BQUE Test_2.zip
    141.3 KB · Affichages: 22

TempusFugit

XLDnaute Impliqué
Re : Problème execution d'une macro

Bonjour de nouveau

Pour savoir si cela vient du nombre de lignes, fais des essais par pas de 2000 lignes
essai1: 2000 lignes
essai2: 4000 lignes
essai3: 6000 lignes

Ainsi tu sauras si le problème est lié au nombre de lignes ou pas.
 

Nullita

XLDnaute Nouveau
Re : Problème execution d'une macro

Re

Alors après divers essais, je n'ai finalement aucune idée du problème, mon histoire de ligne est pure invention de ma part.

Le libellé de la ligne 89 de la macro qui génère le "bug " est le suivant :

For m = TbB(TbR(i, 1) + k, 1) To TbB(TbR(i, 1) + k, 2) 'pour chaque ligne de la date B

Si quelqu'un pouvait me "traduire" le sens de cette ligne, je pourrais peut-être comprendre ce qui se passe.

D'avance un grand merci

Cordialement

Nulli
 

Dranreb

XLDnaute Barbatruc
Re : Problème execution d'une macro

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
À +
 
Dernière édition:

Nullita

XLDnaute Nouveau
Re : Problème execution d'une macro

Bonjour Dranreb,

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.

Cordialement

Nulli
 

Dranreb

XLDnaute Barbatruc
Re : Problème execution d'une macro

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...
 

Nullita

XLDnaute Nouveau
Re : Problème execution d'une macro

Bon alors :

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.

Nulli
 

KenDev

XLDnaute Impliqué
Re : Problème execution d'une macro

Bonjour Nulli, Dranreb, TempusFugit,

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.

Cordialement

KD
 

Nullita

XLDnaute Nouveau
Re : Problème execution d'une macro

Bonsoir KenDev et tous,

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 :eek:

Je te remercie encore et suis désolée d'être passée trop tard.

Cordialement
 

KenDev

XLDnaute Impliqué
Re : Problème execution d'une macro

Re,

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 ? :confused: :p

Cordialement

KD
 

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95