VBA classeur qui interfère avec les autres

Résolu
Sansandrine Messages postés 88 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 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


5 réponses

Sansandrine Messages postés 88 Date d'inscription   Statut Membre Dernière intervention  
 
toujours personne ?
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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 88 Date d'inscription   Statut Membre Dernière intervention  
 
Mais le lien est dans mon message :
http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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   Statut Contributeur Dernière intervention   4 724
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 88 Date d'inscription   Statut Membre Dernière intervention  
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 88 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 724
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour gbinforme,
C'est toujours un grand plaisirs que je note vos coseils et les mettre en pratique.
Amicales salutations.
Le Pingou.
0