[Catégorie modifiée .Net -> VBA] VBA Excel Erreur 17 suite fausse manip en pas à
SeniorVb
-
22 août 2012 à 11:20
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023
-
7 févr. 2018 à 22:28
Bonjour à tous, Je suis un vieux développeur (77 ans). C'est la 1ère fois que j'adresse une demande sur le forum, aussi ne suis-je pas sûr de bien m'y prendre !
Après une fausse manip (je ne sais pas laquelle) lors d'un pas pas dans un module VBA Excel, le système bloque tout avec une erreur 17 "Impossible d'exécuter l'opération requise", même après avoir fermé et relancé Excel, et même après avoir fermé et relancé le PC.
Sur Internet, SpeedMaxPC se vante de corriger cette erreur (+ 964 autres trouvées !), mais je n'ai pas confiance, car c'est une version d'évaluation gratuite, or, il faut donner ses coordonnées bancaires. Si quelqu'un d'entre vous a l'expérience de ce logiciel et le conseille, je l'achète illico.
Les jeunes développeurs que vous êtes peuvent-ils me renseigner ?
En tout cas je les remercie d'avoir lu ce message.
4u4me4us
Messages postés781Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 22 août 2012 à 11:54
Si j'ai bien compris, il y a une ligne de code qui soulève l'erreur?
Dans ce cas il faut poster le ligne pour que nous pussions voir de quoi il s'agit.
Utiliser le troisième bouton depuis la droite du menu message. Colle la ligne entre les balise et envoi.
Note que nous ne trouvons pas tjs.
Il est possible que juste une ligne soit trop peux pour faire une analyse correcte donc évalue les lignes qui favorisera la compréhension du problème. Évite de mettre tout ton code c un truc à décourager.
Merci pour ta réponse. Hélas, l'erreur ne me donne aucune ligne particulière que je pourrais poster. Dès que je fais F8, le message 17 apparaît, et c'est tout. Quand je balaye le code, rien n'attire visuellement mon attention. L'erreur s'est produite alors que j'alternais le pas à pas entre F8 et Ctrl+F8, et que mes doigts allaient très (trop) vite. Est-ce une piste ?
Par ailleurs je n'ai vu nul part "le menu message avec son 3ème bouton". Je ne suis pas en détresse, car j'ai une version sauvegardée avec une 10ène de lignes à réécrire. Mais si c'est dépannable, ça peut servir pour une prochaine fois, et à d'autres navigateurs.
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 22 août 2012 à 12:42
Bonjour,
Quand l'erreur apparait, tu n'a pas le bouton "Débogage" (ou similaire) qui est disponible ?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 août 2012 à 12:53
Salut
Catégorie .Net -> VBA modifiée
Essaye ceci afin d'être sûr que ce n'est pas ton code qui génère l'erreur :
Ouvre ton classeur et va dans l'éditeur VB.
Menu Débogage + Compiler le projet.
S'il ne se passe rien, c'est que ton code est correct, en tous les cas, pas d'anomalie de type ou de nom.
Essaye aussi de lancer un autre classeur qui possède des macros pour voir si c'est Excel qui réagit mal ou si cela peut avoir un lien avec ton code.
Si cela fonctionne avec un autre classeur, vérifie dans le code incriminé si, par hasard, tu n'aurais pas utilisé un nom de variable ou de fonction identique à un nom d'un mot clé du langage (genre mid, left, open, ...).
Ce genre de problème peut passer la barrière de la compilation mais causer des ennuis pour lesquels les codes d'erreur ne sont pas toujours très clairs.
Ton code est-il 'simple' ou utilise t-il des APIs ?
Quelle version de Excel ?
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 août 2012 à 13:00
As-tu utilisé des Debug.Assert pour faire des points d'arrêt ?
Y a t-il des boucles For-Next ou Do-Loop ?
Si oui, par sécurité, insère au moins un DoEvents dans chaque boucle; ça te permettra d'interrompre en cas de bouclage sans fin.
Par où commence ton programme ?
(UserForm, Workbook_Open ...)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 août 2012 à 13:12
Quant aux touches de débogage, je ne sais pas ce que fait Ctrl-F8, mais :
- Shft-F8 identique à F8 sauf que les sous-procédures (*) appelées sont exécutées sans interruption.
(*) sous-procédure : à définir. S'agit-il de Gosub-Return (vieilleries peu recommandées) ou des Sub/Function ?
- Shft-Ctrl-F8 permet d'exécuter la procédure en cours et repassera en mode pause aussitôt qu'elle en sortira.
- NHenry : Oui, j'ai bien sûr le bouton "débogage" mais il ne m'apporte aucune solution. Concernant les 4 points suivants de ta réponse, oui, j'ai imprimé et lu le règlement, et je pense m'y être conformé.
- Jack : Non, la compil est refusée, tout marche très bien pour tous autres programmes en dynamique ou en pas à pas.
Pas d'utilisation de noms réservés, je ne faisais qu'un pas à pas sur mon code sans aucune modif préalable.
Pas d'API's dans mon code. Version Excel 2003.
Bien noté la technique avec "Debug.Assert".
Il y a des For-Next, je vais insérer dans ma version précédente qui fonctionne bien des "Doevents", comme tu le préconise, .
Mon programme commence par un Sub des plus ordinaires "Sub Calcul()".
Sur mon PC, c'est Ctrl+F8 qui agit comme tu le dis.
Oui, étant vieux moi-même, j'utilise beaucoup les GoSub/Return, mais ça fait des lustres que je pratique çà, et je pense bien le contrôler.
J'ai l'habitude d'exécuter jusqu'au curseur sur une instruction active, mais dans le cas de l'erreur 17, je peux juste afficher mon code et après AUCUNE ACTION EST POSSIBLE.
En conclusion, ne vous souciez plus de ma question, sauf si vous avez une expérience identique à la mienne avec réparation possible.
Mais vous êtes tous sympas, et je vous remercie beaucoup.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 août 2012 à 15:03
As-tu essayé ce m^me classeur sur une autre machine ?
Ton code, est-il gros ?
Au delà de 400-500 ligne par procédure, ce n'est pas recommandé; chose qui peut arriver si tu préfères les Gosub aux procédures (Sub/Function).
Merci Jack, la macro ne marche pas non plus sur un portable que j'ai à côté de mon PC fixe, à la différence prêt que démarrant le pas à pas, il me signale une erreur de compil : aucune variable de mon code n'est accepté !
Donc, là, j'arrête, et je retrouve avec plaisir ma version précédente à laquelle je n'ai que 10 lignes à ajouter pour retrouver la top version.
Oui, la macro fait 500 lignes, mais elle marche comme çà depuis des années, et après les 10 lignes ajoutées, je prends ma retraite de développeur !
En tout cas, pour ma 1ère demande, je suis impressionné par le nombre et la qualité des réponse, ça m'encourage à donner moi-même des solutions sur des questions que je connais bien, . . . mais il y en a peu !
Merci Jack, mais là j'ai arrêté mes recherches et rétabli mon programme tel que je le souhaite définitivement et pour l'éternité ("qui est longue surtout à la fin" comme le disais Pierre Dac).
Ce programme tourne depuis plus de 10 ans avec ces insuffisances et ces lourdeurs, et maintenant, ça y est, il tourne de plus belle !
Bonjour à tous mes dépanneurs, et en particulier à 4u4me4us qui m'a mis sur la voie : "créer un nouveau fichier xls puis copier et coller la macro dans le nouveau". J'ai fait une variante très proche :
- Dans le projet lui-même
- Création d'un nouveau module
- Copie code module accidenté dans nouveau module
- Vidage module accidenté et suppression
Et, ça marche !
Merci 4u4me4us, je pense que cette manip peut servir à des Internautes en prise avec l'erreur 17.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 août 2012 à 11:49
Cool Maurice
Merci d'avoir partagé ta solution. Ca pourra, en effet, servir à d'autres.
Ça fait plaisir de voir des citations de Pierre Dac, mais il faut rendre à César ce qui appartient à Cléopâtre, c'est Woody Allen qui nous vaut cette formule "L'éternité c'est long, surtout vers la fin".
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 23 août 2012 à 14:53
Ouais, jack, comment sais-tu qu'il s'appelle Maurice ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ