Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Bug dans la reconnaissance de classeurs

Chris57

XLDnaute Occasionnel
Bonjour à tous

au boulot depuis des années j'utilise une macro complémentaire qui créé un bouton si on ouvre un classeur de tel ou tel nom :
Voici cette macro complémentaire :



Donc si un classeur nommé PROG_DE_MARCHE_xxxxxxxxx ou PROG_APPEL_xxxxxxxx est ouvert il créé un bouton et y affecte la macro d'un autre classeur nommé quant à lui PROGRAMME DE CHARGE CEH.xlsm

Mais suite à une modif j'ai un bug que je n'explique pas : lorsque je clique sur le bouton créé, il me fait un bug dans la ligne que j'ai mise en rouge. L'erreur est "l'indice n'appartient pas à la séletion".

En fait quand je clic sur le bouton, il ouvre le fameux classeur PROGRAMME DE CHARGE CEH.xlsm contenant la macro. Même si je colle un macro vide à ce bouton, le défaut est le même.

Quelqu'un a une idée ?
 

Chris57

XLDnaute Occasionnel
Re : Bug dans la reconnaissance de classeurs

je reviens un peu tard sur le sujet. Je le met de côté pour le moment car je dois bosser sur un autre sujet. Je reviendrai dessus plus tard.
Mais juste pour info, la feuille "Prog_CEH" existe bel et bien.
Lorsque je reviendrai dessus, je posterai la totalité des fichiers pour que ce soit plus clair, à moins que je ne trouve la solution entre temps
 

Chris57

XLDnaute Occasionnel
Re : Bug dans la reconnaissance de classeurs

Effectivement c'est ce qui se passe !! Je ne comprends pas comment ça a pu arriver d'un coup. Cela fait au moins 5 ans que cette macro complémentaire tourne sans problème, et maintenant elle bug...

J'ai corrigé le truc en rajoutant un "classeur.Activate" :
Code:
    If Left(classeur.Name, 11) = "PROG_APPEL_" Then 
    classeur.Activate            
    Sheets("Prog_CEH").Select

' Crée un bouton affecté par macro du PROGRAMME DE CHARGE CEH                      
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 500.25, 51#, 106.5, 40.25).Select
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 20
    Selection.Characters.Text = "Cliquer ici pour avoir la version CEH"
    Selection.Font.Bold = True
    Selection.OnAction = "'L:\UP78\PROGRAMME DE CHARGE\PROGRAMME DE CHARGE CEH.xls'!RECUP"
    End If


ça fonctionne mais ça engendre un autre problème :
La macro complémentaire créé un bouton à qui est affecté une autre macro provenant d'un autre classeur, fermé à ce moment.
Cet autre classeur a un code à l'ouverture pour se mettre à la bonne page :
Code:
Private Sub Workbook_Open()
        Worksheets("Progr").Select
   ...

Avec la correction que j'ai apportée, j'ai maintenant une erreur dans le Worksheets("Progr").Select lorsque je clique sur le bouton créé...

En gros, au moment où la macro complémentaire affecte la macro "RECUP" au bouton, le classeur contenant cette macro s'ouvre immédiatement.
Comme il y a ouverture, la macro complémentaire refait son test parmis les classeurs ouverts et replace le focus sur le premier "PROG_APPEL_" (dur dur à expliquer).
En même temps s'active le Workbook_Open du classeur en train de s'ouvrir, mais comme le focus est mal placé, il ne trouve pas la feuille "Progr".

Il me faudrait une astuce pour contourner ce problème !!
 
C

Compte Supprimé 979

Guest
Re : Bug dans la reconnaissance de classeurs

Salut Chris57,

Pourquoi tu ne mets pas :
Code:
Private Sub Workbook_Open()
  ThisWorkbook.Activate
  Worksheets("Progr").Select
...

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…