VBA Excel - Evènement "Workbook_Desactivate"

JM247L
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
- 18 sept. 2007 à 16:23
tubafat
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007
- 19 sept. 2007 à 16:47
Bonjour,
Au lancement d'une application Excel, je désactive les barres d'outils présentes lors de l'ouverture d'Excel
Afin de remettre en l'état en quittant l'application ou en cas de chargement de fichier - qui n'appartient pas à l'application - par l'utilisateur, je stocke les index de barre d'outils dans un coin
Quitter l'application ne pose pas de problème

Pour le changement de fichier :
   Au niveau du fichier de l'application dans Workbook_Activate j'ai mis un code permettant de restituer les
   barres d'outils originales le problème c'est comment faire référence au fichier qui vient d'être désactivé ?

Existerait il une possibilité du mêm type que celle pour "Worksheet_Change(ByVal Target As Range)" ?
Ci-dessous le Code

Private Sub Workbook_Activate()
Dim ToolsBar As Object, I
  I = Range("CommandBarManagement").Row + 1
  For Each ToolsBar In Application.CommandBars
    If Application.CommandBars(ToolsBar.Index).Visible = True Then
      Application.CommandBars(ToolsBar.Index).Enabled= False
      Cells(I, Range("ComBarMgt").Column) = Application.CommandBars(ToolsBar.Index).Index
      I = I + 1
    End If
  Next
End Sub

Private Sub Workbook_Deactivate()
Dim ToolsBar As Object, I
' Blocage à ce niveau car il ne connait pas la zone dans le fichier activé
  If Cells(Range("ComBarMgt").Row + 1, Range("ComBarMgt").Column) <> "" Then
    I = Range("ComBarMgt").Row + 1
    For Each ToolsBar In Application.CommandBars
      If Application.CommandBars(ToolsBar.Index).Index = Cells(I, 1) Then
        Application.CommandBars(ToolsBar.Index).Enabled = True
        Cells(I, Range("ComBarMgt").Column) = ""
        I = I + 1
      End If
    Next
  End If
End Sub

Merci de votre support
Cliquer "Réponse Acceptée" Quand La Réponse Est OK

JML. Partageons notre savoir et nos acquis

5 réponses

tubafat
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

19 sept. 2007 à 11:00
Salut,

ne serait-il pas possible de mettre tes index de barre d'outils dans une variable tableau publique à l'activation du workbook, plutôt que sur la feuille?
Je pense que tu devrais ainsi pouvoir récupérer tes valeurs...

Je suis pas trop sur de moi quand même, masi ça peut donner des idées!

Tubafat  
Avant d'imprimer, pensez à l'environnement
0
JM247L
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
19 sept. 2007 à 11:40
Salut,
Mon problème n'est pas la gestion des barres d'outils personnalisée mais les barres d'outils standards
En fait lorsque j'ouvre mon appli j'enlève les barres standards Excel et je les remets en fermant l'appli

Le problème c'est quand l'aapli laisse la main à l'utilisateur et que celui ci active un fichier Excel qui n'appartient pas à l'appli ... je voudrais remettre les barres standards Excel

 Cliquer "Réponse Acceptée" Quand Réponse OK
JML. Partageons notre savoir et nos acquis
0
tubafat
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

19 sept. 2007 à 11:57
OK ce que je voulais dire c'est que quand tu actives ton workbook, tu stockes tes index dans une plage de cellule de ta feuille, mais quand tu essayes de les récupérer sur la même feuille lors de l'évènement workbook_deactivate, le workbook étant désactivé il ne trouve plus la feuille.
Donc je te proposais de stocker tes index non plus sur la feuille mais dans une variable tableau publique, du coup tu pourrais récupérer tes barres d'outils si un nouveau classeur est activé...

Enfin tout ça c'est de la théorie, je maitrise pas trop la syntaxe, mais tu dois pouvoir faire un truc du genre:

Public baroutil() As String
I=0
'puis boucler comme ceci
For Each ToolsBar In Application.CommandBars
    If Application.CommandBars(ToolsBar.Index).Visible = TrueThen
      Application.CommandBars(ToolsBar.Index).Enabled = False
      baroutil(I) = Application.CommandBars(ToolsBar.Index).Index
      I = I + 1
    End If
Next

et inversement pour l'évènement workbook_deactivate

Tubafat  
Avant d'imprimer, pensez à l'environnement
0
JM247L
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
19 sept. 2007 à 16:33
Merci mais je crains que ça ne le fasse pas dans la mesure ou entre le moment ou l'appli est ouverte et celui ou elle est fermée, l'utilisateur à la main et autant que je sache, les variables perdent leur valeur à un moment que je ne saurais définir même si elles sont du domaine publique

 Cliquer "Réponse Acceptée" Quand Réponse OK
JML. Partageons notre savoir et nos acquis
0

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

Posez votre question
tubafat
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

19 sept. 2007 à 16:47
OK ben bon courage dans tes recherches parceque là je ne vois rien de mieux...
@+

PS: si tu trouves quelquechose, ça m'intéresserait que tu psotes ta solution s'il te plait...

Tubafat  
Avant d'imprimer, pensez à l'environnement
0