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

  1. Sansandrine Messages postés 94 Statut Membre
     
    toujours personne ?
    0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. Sansandrine Messages postés 94 Statut Membre
       
      Mais le lien est dans mon message :
      http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls
      0
  3. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  4. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    2. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
    1. Sansandrine Messages postés 94 Statut Membre
       
      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
    2. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      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
    3. Sansandrine Messages postés 94 Statut Membre
       
      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
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    5. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour gbinforme,
      C'est toujours un grand plaisirs que je note vos coseils et les mettre en pratique.
      Amicales salutations.
      Le Pingou.
      0