Problème vba compatibilité entre Excel 2010 et 2003
Résolu/Fermé
L28
Messages postés
157
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
27 octobre 2019
-
Modifié par L28 le 7/05/2013 à 16:20
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 22 sept. 2014 à 22:27
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 22 sept. 2014 à 22:27
A voir également:
- Problème vba compatibilité entre Excel 2010 et 2003
- Liste déroulante excel - Guide
- Formule excel - Guide
- Compatibilite windows 11 - Guide
- Telecharger word 2010 - Télécharger - Traitement de texte
- Si et excel - Guide
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 763
7 mai 2013 à 20:13
7 mai 2013 à 20:13
Bonjour,
Il est difficile de te répondre sans le classeur et sans la totalité du code, mais il ne s'agit probablement pas d'un problème de compatibilité 2003 / 2007 mais plutôt d'un écriture ambigüe interprétée différemment .
Met ton fichier (ou un exemple publiable) sur https://www.cjoint.com/
Conseil pour les débutants (et les autres) : toujours débuter chaque module par :
et dans le cas de variables publiques, ajouter :
Remarque : le fait de déclarer des variables publiques ne permet pas de conserver leur valeur lorsque l'exécution des macros se termine : je ne vois pas l'intérêt de ComptUndo s'il n'est pas initialisé à partir d'une donnée mémorisée.
Patrice
Il est difficile de te répondre sans le classeur et sans la totalité du code, mais il ne s'agit probablement pas d'un problème de compatibilité 2003 / 2007 mais plutôt d'un écriture ambigüe interprétée différemment .
Met ton fichier (ou un exemple publiable) sur https://www.cjoint.com/
Conseil pour les débutants (et les autres) : toujours débuter chaque module par :
Option Explicitça oblige à déclarer toutes les variables et ça évite toute ambigüité.
et dans le cas de variables publiques, ajouter :
Option Private Modulepour éviter d'éventuelles interférences avec d'autres projets (ou des macros complémentaires) dans lesquels une variable pourrait avoir le même nom.
Remarque : le fait de déclarer des variables publiques ne permet pas de conserver leur valeur lorsque l'exécution des macros se termine : je ne vois pas l'intérêt de ComptUndo s'il n'est pas initialisé à partir d'une donnée mémorisée.
Patrice
L28
Messages postés
157
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
27 octobre 2019
132
13 mai 2013 à 11:06
13 mai 2013 à 11:06
Bonjour Patrice33740,
Merci pour ta réponse! Je suis actuellement en train d'effectuer les modifications que tu me conseilles et je trouve quelques erreurs assez "drôles" comme par exemple le xlcontinuous qui devient x1continuous en raison d'une mauxaise interprétation.
Aussi l'utilisation de Err en tant que variable perso alors que Err existe déjà dans excel ... bref quelques petites erreurs.
Sinon je n'ai pas "bien" compris ta remarque concernant la déclaration publique et cela m'effraie car j'utilise quelques variables déclarées en publiques dont:
- Version: Integer contenant la version du logiciel (10,12,14..) permettant de déterminer quelles fonctions utiliser en fonction de Excel 2003 ou 2007 (cela me permet de faire tourner le programme actuellement en désactivant le compteur Undo)
- Et quelques autres variables telles que ModifAuto: booléen qui indique si la modification au classeur est d'origine utilisateur ou macro (permet de diminuer les opérations)
Je n'ai pas rencontré de soucis pour leurs mises en place, le comptUndo s'incrémente et se réduit bien de même pour les tableaux de sauvegarde. Sauf si bien sur il y a une erreur et que je réinitialise le projet.
Sinon J'ai essayé d'utiliser le compteur dans un classeur vide et cela fonctionne donc effectivement ce n'est pas un problème de compatibilité...
Au final (j'ai créé ce post en même temps que je corrigeais le code), l'erreur vient d'un problème de protection de la feuille.
En effet j'avais protégé la feuille avec Protect et UserinterfaceOnly.
Pour Sauvaction juste avant de l'appeler je faisais un unprotect et pas pour undo. Je pense que Sur 2007 les macro ont accès aux objets alors que sur 2003 même avec UserinterfaceOnly elles n'ont accès qu'au tableau...
Après ce ne sont que des suppositions.
Encore merci pour ton aide!
Merci pour ta réponse! Je suis actuellement en train d'effectuer les modifications que tu me conseilles et je trouve quelques erreurs assez "drôles" comme par exemple le xlcontinuous qui devient x1continuous en raison d'une mauxaise interprétation.
Aussi l'utilisation de Err en tant que variable perso alors que Err existe déjà dans excel ... bref quelques petites erreurs.
Sinon je n'ai pas "bien" compris ta remarque concernant la déclaration publique et cela m'effraie car j'utilise quelques variables déclarées en publiques dont:
- Version: Integer contenant la version du logiciel (10,12,14..) permettant de déterminer quelles fonctions utiliser en fonction de Excel 2003 ou 2007 (cela me permet de faire tourner le programme actuellement en désactivant le compteur Undo)
- Et quelques autres variables telles que ModifAuto: booléen qui indique si la modification au classeur est d'origine utilisateur ou macro (permet de diminuer les opérations)
Je n'ai pas rencontré de soucis pour leurs mises en place, le comptUndo s'incrémente et se réduit bien de même pour les tableaux de sauvegarde. Sauf si bien sur il y a une erreur et que je réinitialise le projet.
Sinon J'ai essayé d'utiliser le compteur dans un classeur vide et cela fonctionne donc effectivement ce n'est pas un problème de compatibilité...
Au final (j'ai créé ce post en même temps que je corrigeais le code), l'erreur vient d'un problème de protection de la feuille.
En effet j'avais protégé la feuille avec Protect et UserinterfaceOnly.
Pour Sauvaction juste avant de l'appeler je faisais un unprotect et pas pour undo. Je pense que Sur 2007 les macro ont accès aux objets alors que sur 2003 même avec UserinterfaceOnly elles n'ont accès qu'au tableau...
Après ce ne sont que des suppositions.
Encore merci pour ton aide!
Bonjour tout le monde !
eh ben moi j'ai un trés serieux probleme !!
j'ai créer un fichier avec plein de macros sous excel 2007 , ce fichier marhce parfaitement sous excel 2010 mais avec 2007 ça plante aprés 10-15 min!!
Pourquoi ? comment ? c'est un probleme qui date de plus que 2 mois , j'ai fais bcp de recherche sur internet sans trouver la solution :(
J'attends vos solutions avec impatience !!
GRAND MERCI
eh ben moi j'ai un trés serieux probleme !!
j'ai créer un fichier avec plein de macros sous excel 2007 , ce fichier marhce parfaitement sous excel 2010 mais avec 2007 ça plante aprés 10-15 min!!
Pourquoi ? comment ? c'est un probleme qui date de plus que 2 mois , j'ai fais bcp de recherche sur internet sans trouver la solution :(
J'attends vos solutions avec impatience !!
GRAND MERCI
Raymond PENTIER
Messages postés
57153
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
17 161
Modifié par Raymond PENTIER le 21/09/2014 à 19:51
Modifié par Raymond PENTIER le 21/09/2014 à 19:51
Normal : Les ingénieurs s'efforcent de garantir une compatibilité ascendante (de 2007 vers 2010), et y parviennent quasiment à 100%.
Mais il faut se rappeler que la compatibilité descendante (de 2010 vers 2007 par exemple) n'est jamais envisagée, surtout en matière de macros.
Donc pas de solution, sauf à ré-écrire tes macros sous Excel 2007 ...
Mais il faut se rappeler que la compatibilité descendante (de 2010 vers 2007 par exemple) n'est jamais envisagée, surtout en matière de macros.
Donc pas de solution, sauf à ré-écrire tes macros sous Excel 2007 ...
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 763
Modifié par Patrice33740 le 22/09/2014 à 22:28
Modifié par Patrice33740 le 22/09/2014 à 22:28
Bonjour ameddo79
Ma boule de cristal n'est pas suffisamment puissante pour me permettre d'examiner ton code en détail !!!
Mais il est quasiment certain que si tu mets ton fichier sur c-joint nous aurons une vision beaucoup plus nette ...
.. à moins que la botte de paille ne soit trop grosse.
Patrice
Ma boule de cristal n'est pas suffisamment puissante pour me permettre d'examiner ton code en détail !!!
Mais il est quasiment certain que si tu mets ton fichier sur c-joint nous aurons une vision beaucoup plus nette ...
.. à moins que la botte de paille ne soit trop grosse.
Patrice