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 :

Private Sub AppXl_Workbookopen(ByVal Wb As Workbook)

' VERIFIE SI LE CLASSEUR OUVERT EST UN PROGRAMME DE CHARGE CODAP
For Each classeur In Workbooks
' Si un classeur nommé "PROG_DE_MARCHE*" est ouvert
If Left(classeur.Name, 15) = "PROG_DE_MARCHE_" Then
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.xlsm'!RECUP"


' Si un classeur nommé "PROG_APPEL_*" est ouvert
ElseIf Left(classeur.Name, 11) = "PROG_APPEL_" Then
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.xlsm'!RECUP"
End If

Next classeur
End Sub


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

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510