Bonjour,
Je suis assez novice en VBAE, mais j'ai réussi à produire un code tel qu'il me l'a été demandé dans le cadre d'un stage. Jusque là pas de problèmes.
En fait mon problème est le suivant : j'execute mon programme, je vérifie qu'il fonctionne bien, ensuite je l'execute de nouveau pour voir un détails, je recommence, et au bout de quelques fois, l'execution se bloque sur une ligne qu'Excel vient d'executer plusieurs fois sans problème. Parfois quand il est bloqué, je passe en pas à pas (F8 pour les intimes) pour essayer de comprendre le problème, et des fois Excel passe sur l'instruction qui l'a fait planter juste avant et passe à la suivante, en executant cette instruction, sans aucun problème. Une fois arrêté, si je réinitialise mon programme et que je le relance, il va s'arrêter sur une instruction plus tôt, ou plus tard.
Mon programme s'arrête le plus souvent sur des instruction comportant du .Select, or je sais que vous, utilisateurs plus expérimentés de developpez.net avaient en horreur la méthode .Select. Je l'ai vu, et je vous ai compris, j'ai modifié mon programme en conséquent et il finit par planter de manière assez aléatoire, sur les lignes que j'ai modifié pour enlever le select.
Qu'est-ce que fait mon programme, et l'ai-je codé avec mes pieds ?
a priori non, puisqu'il va faire exactement ce que j'ai prévu et codé qu'il fasse, plusieurs fois, et sans que je change une seul ligne, il va s'arrêter, le plus souvent avec l'erreur :" '1004' erreur définie par l'application ou par l'objet" ou un " la méthode select a échoué".
Que fait mon programme plu précisément : je ne vais pas le mettre ici, puisqu'il fait dans les 1500 lignes, avec un code aéré et indenté. Il ne fait rien de très sorcier, et il utilise la même philosophie plusieurs fois. Il va prendre une information d'un classeur, la process, et colle le résultat dans un autre classeur. Mais le pire, c'est que les erreurs sont sur des broutilles telles que sélectionner 2 cellules et les fusionner, et je met à chaque fois Workbooks("nom_fichier_source").Worksheets("nomfeuille").cells(titi,toto). Même sans la méthode .Select, Excel finit par me planter mon programme, et puis plus tard, une fois que j'ai commenté toutes les lignes susceptible de prvoquer un problème, et les avoir décommenté, le programme va refonctionner, un peu. Mon programme n'est pas séquentiel : il n'utilise pas le temps, jamais, les informations sont fixes, ne change pas, et je ne change rien entre l'état où mon programme va fonctionner parfaitement et quand il va planter, que ce soit dans mon code, dans mes fenêtres sur mon bureau, ou même mes stylo sur mon bureau.
Je suis sous Excel 2010, dans une grande entreprise, donc je suis sûr que ce n'est pas une version pirate instable, et je ne peut rien installé sur mon poste.
Ma question au lecteur qui est arrivé jusqu'ici, c'est : Vous est-il arrivé une chose similaire, et y a -t-il une solution qui puisse m'eviter toute frustration. Je sais que mon code fonctionne, je l'ai démontré, il est tout à fait illogique que mon programme plante sur une instruction qu'il a déjà executé plusieurs fois une poignée de seconde auparavant.
Je n'ai pas fenêtre dans mon local, mais sinon je crois que mon PC pourrait aller voir quel temps il fait dehors à force de se foutre aussi ouvertement de ma tronche.
Merci d'avance pour un éclairement, et merci d'avoir lu ceci.
OttoH
Partager