VBA classeur qui interfère avec les autres

Résolu/Fermé
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015 - Modifié par Sansandrine le 1/06/2010 à 09:23
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 - 7 juin 2010 à 10:43
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


5 réponses

Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
4 juin 2010 à 22:33
toujours personne ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
4 juin 2010 à 22:56
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.
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
4 juin 2010 à 23:27
Mais le lien est dans mon message :
http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
4 juin 2010 à 23:34
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 Sub
Effectivement, 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
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
Modifié par Le Pingou le 4/06/2010 à 23:58
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
5 juin 2010 à 10:18
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.
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
5 juin 2010 à 11:37
Bonjour gbinforme,
Merci infiniment de se précieux renseignement.
J'ai insérer dans mon code un contrôle sur le nom du classeur activé et sa marche.
Bon week-end.
Salutations.
Le Pingou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
6 juin 2010 à 23:04
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
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
7 juin 2010 à 08:58
Oui ça marche bien, MERCI ! Je pourrais ainsi travailler avec plusieurs classeurs en même temps.
Par contre est ce qu'il y a quelque chose à rajouter pour que ça n'interfère plus avec les autres feuilles du classeur si je veux en rajouter ?
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
7 juin 2010 à 09:54
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
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
7 juin 2010 à 10:14
Vous avez pas a vous excuser ! Vous m'avez vraiment bien aidé !!
Et puis ça me permet de perfectionner mon vba !
Encore MERCI d'avoir pris du temps pour m'aider.

Sansandrine
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
7 juin 2010 à 10:18
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.
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
7 juin 2010 à 10:43
Bonjour gbinforme,
C'est toujours un grand plaisirs que je note vos coseils et les mettre en pratique.
Amicales salutations.
Le Pingou.
0