VBA classeur qui interfère avec les autres
Résolu
Sansandrine
Messages postés
94
Statut
Membre
-
Le Pingou Messages postés 12273 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12273 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà j'ai un fichier qui contient des macros et qui interfère avec d'autres fichiers et je ne sais pas comment faire pour que la macro soit juste pour ce fichier.
Quand j'ouvre un autre fichier excel il me met :
Erreur d'exécution 9 : l'indice n'appartient pas à la sélection
Et quand le fichier est le seul ouvert il n'y a pas de problèmes. J'ai essayé de définir le classeur dans le début de la macro : woorkook(« ... »).sheets(« men_ext »).
Aussi j'ai du supprimer toutes les autres feuilles de ce classeur car elles interféraient aussi mais ça c'est pas le plus grave, je voudrais en priorité pouvoir travailler sur d'autres classeurs en même temps que sur celui-ci sans qu'il me mette le message d'erreur.
J'espère que quelqu'un pourra m'aider.
Merci d'avance.
Voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
Voilà j'ai un fichier qui contient des macros et qui interfère avec d'autres fichiers et je ne sais pas comment faire pour que la macro soit juste pour ce fichier.
Quand j'ouvre un autre fichier excel il me met :
Erreur d'exécution 9 : l'indice n'appartient pas à la sélection
Et quand le fichier est le seul ouvert il n'y a pas de problèmes. J'ai essayé de définir le classeur dans le début de la macro : woorkook(« ... »).sheets(« men_ext »).
Aussi j'ai du supprimer toutes les autres feuilles de ce classeur car elles interféraient aussi mais ça c'est pas le plus grave, je voudrais en priorité pouvoir travailler sur d'autres classeurs en même temps que sur celui-ci sans qu'il me mette le message d'erreur.
J'espère que quelqu'un pourra m'aider.
Merci d'avance.
Voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
5 réponses
-
-
bonjour
Ton message n'est pas suffisamment précis pour que l'on te donne une réponse adéquate.
C'est sans doute ta macro qui n'est pas correctement codée mais sans la voir, ce n'est pas possible de deviner ce qui ne fonctionne pas : les possibilités d'erreur sont infinies !
Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées, mais avec la structure de tes données et les macros sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile. -
Bonjour,
Je viens de voir le poste et il s'agit d'une procédure que j'ai écrite:Private Sub Worksheet_Calculate() Sheets("MEN_EXT").Activate If ValVerif = "" Then Verification End If End SubEffectivement, si le classeur est ouvert et que l'on ouvre un autre, la procédure se elle se déclenche et provoque une erreur.
C'est bizare je vais regarder.
Pour gbinforme, le classeur concerner se trouve sous : http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls -
Bonjour Sansandrine,
Remplacer la procédure éxistante par celle-ci:Private Sub Worksheet_Calculate() If Not ActiveWorkbook.Name = "MEN EXT avec calcul de surfaces.xls" Then Exit Sub Sheets("MEN_EXT").Activate If ValVerif = "" Then Verification End If End Sub
Note: contrôle que le nom du classeur est bien correct:
"MEN EXT avec calcul de surfaces.xls"
Salutations.
Le Pingou-
Bonjour Le Pingou,
Effectivement je n'avais pas le classeur lors de mon message et je n'avais pas pensé à "calculate".
Cette fonction peut s'avérer utile mais elle a le gros inconvénient d'être sans arrêt déclenchée, à chaque modification de classeur concerné ou non. Elle est en activité aussi, bien sûr, à la moindre modification de feuille par macro, ce qui fait qu'il faut vraiment quelle soit très légère, parfaitement délimitée et utilisée avec parcimonie. -
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour Sansandrine,
Est-ce que c'est bon maintenant avec cette correction : https://forums.commentcamarche.net/forum/affich-17916795-vba-classeur-qui-interfere-avec-les-autres#8-
-
Bonjour,
Remplacer la procédure éxistante par celle-ci:
Private Sub Worksheet_Calculate()
If Not ActiveWorkbook.Name = "MEN EXT avec calcul de surfaces.xls" Then Exit Sub
If Not ActiveSheet.Name = "MEN_EXT" Then Exit Sub
Sheets("MEN_EXT").Activate
If ValVerif = "" Then
Verification
End If
End Sub
Excusez-moi pour le désagrément causé.
Salutations.
Le Pingou -
-
Bonjour Le Pingou,
En évitant les négations et en positivant, l'on peut aussi l'écrire :
Private Sub Worksheet_Calculate() If ActiveWorkbook.Name = "MEN EXT avec calcul de surfaces.xls" _ And ActiveSheet.Name = "MEN_EXT" _ And ValVerif = "" Then Verification End Sub
J'aime bien simplifier au maximum pour faciliter la compréhension ultérieure...
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Bien amicalement et bonne journée à toi. -
-