[Catégorie modifiée .Net -> VBA] VBA Excel Erreur 17 suite fausse manip en pas à

- 22 août 2012 à 11:20 - Dernière réponse :
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 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.

SeniorVb
Afficher la suite 

Votre réponse

21 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
30 octobre 2013
- 22 août 2012 à 11:54
0
Merci
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.
Commenter la réponse de 4u4me4us
0
Merci
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.

Merci encore, SeniorVb
Commenter la réponse de SeniorVb
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 22 août 2012 à 12:42
0
Merci
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
---
Commenter la réponse de NHenry
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 12:53
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 13:00
0
Merci
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 ...)
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 13:12
0
Merci
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.
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 13:13
0
Merci
Ctrl-F8 : Exécute jusqu'au curseur, pour condition que le curseur soit sur une ligne débogable (pas sur un Dim, par exemple)
Commenter la réponse de cs_Jack
0
Merci
Merci à tous pour vos réponses :

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



SeniorVb
Commenter la réponse de SeniorVb
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
30 octobre 2013
- 22 août 2012 à 14:46
0
Merci
Mais deux rien SeniorVb

Peut-être peux-tu comme ultime essai créer un nouveau fichier xls puis copier et coller la macro dans le nouveau.

Niveau debug c 0 mais ça aide.

Retaper 10 ligne par fois ça me et donc je fais cette petite manipe.
Commenter la réponse de 4u4me4us
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 15:03
0
Merci
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).
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 22 août 2012 à 15:05
0
Merci
Si tu fais des Gosub, tu as besoin de Label, genre monProg:
As-tu vérifié la ressemblance éventuelle du nom des labels avec des mots du langage ?
Commenter la réponse de cs_Jack
0
Merci
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 et merci à tous

SeniorVb
Commenter la réponse de SeniorVb
0
Merci
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 !

Merci

SeniorVb
Commenter la réponse de SeniorVb
0
Merci
Erreur 17 VBA Excel 2013 réparée

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.

SeniorVb
Commenter la réponse de SeniorVb
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 23 août 2012 à 11:49
0
Merci
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".

A+ j'espère
Commenter la réponse de cs_Jack
0
Merci
OK Jack, je mets mon carnet de citations à jour. Mais comment sais-tu que je m'appelle Maurice ? Même Barack Obama ne le sait pas !

SeniorVb
Commenter la réponse de SeniorVb
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
30 octobre 2013
- 23 août 2012 à 13:22
0
Merci
Même Barack Obama ne le sait pas !
Commenter la réponse de 4u4me4us
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 23 août 2012 à 14:53
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
30 octobre 2013
- 23 août 2012 à 15:04
0
Merci
Jack est un agent de la Matrix!
Commenter la réponse de 4u4me4us
0
Merci
Dans le module y'a juste a tout sélectionner, couper et coller!
Ça rafraîchit le module.
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 7 févr. 2018 à 22:28
Oui c’est la solution utilisée il y a 6 ans....
Commenter la réponse de Coconut

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.