AAArrrghhh Piégé par .... MOI MEME !

D

Dagada75

Guest
Salut à tous !

Il m'arrive une "broutille" .... gênante les 10 premières minutes et ...####!!!**** à la longue !

:eek:)

Voilà ... j'aie voulu sécuriser au mieux un fichier excel destiné à des utilisateurs finaux en MASQUANT le menu !
J'ai ainsi trouvé le superbe fil :

Le code suivant permet de faire cela. Il est à coller dans le module
ThisWorkbook du classeur Document2. Attention, la ligne suivante

*************************
Dim Barres As Collection

doit se trouver en début de module, avant la première procédure, mais après
les éventuelles lignes Option Explicit et Option Base

Private Sub Workbook_Activate()
Dim Barre As CommandBar
Set Barres = New Collection
For Each Barre In Application.CommandBars
If Barre.Visible = True And _
Barre.Name <> "Worksheet Menu Bar" Then
Barres.Add Barre.Name
Barre.Visible = False
End If
Next Barre
Application.CommandBars("worksheet menu bar").Enabled = False
End Sub

Private Sub Workbook_Deactivate()
Dim Barre As Variant
For Each Barre In Barres
Application.CommandBars(Barre).Visible = True
Next Barre
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

Fonctionnement :

A l'activation du classeur, Excel remplit une collection avec les noms des
barres visibles, sauf la barre de menu, puis rend ces barres invisibles. La
barre de menu est désactivée en fin de macro.

A la désactivation du classeur, excel scanne la collection et rend visible
les différentes barres qui la composent, puis la barre de menu est
réactivée.

*****************


SAUF QUE, voulant la joué fine et sécuriser un MAX mon fichier (!!!!!!), je n'aie pas copié la deuxième partie du code pour réactiver la barre à clôture de mon fichier !!

Résultat (j'en vois qui RIGOLE !!) : bah à tout mes fichiers excel que j'ouvre, je n'aie plus de barre de menu donc, ENTRE AUTRE, impossible de corriger mon erreur car le visual basic editor est INACESSIBLE ! je ne peux plus rien faire quoi !

c'est le mégabooooooooooordel !

:eek:(


QUi peut m'aidez ???
 
D

Dagada75

Guest
Merci léa ...

je garde ton petit produit "au chaud" au cas où ...

En fait, en récupérant mon calme (après un bon café aussi !) ... je me suis remémoré que l'on activait VBA par ALT+F11 directement dans excel.

J'ai fait le ménage dans mon workbook ..

Comme quoi le stress !

:eek:)

Mais bon sur le coup .... j'étais TRES surpris ....


Merci encore léa

*** vé m'incrire au VBA-YOGA moi .... ***
 
T

Ti

Guest
Je ne le répéterai jamais assez : ne vous amusez PAS avec les barres de menus.
Un programme n'est pas destiné à être beau, mais efficace et sûr. En jouant avec les barres de menus, on risque le pire. Rien que sur ce forum, on a au moins 2 ou 3 appels au secours de ce genre chaque semaine, ça n'est pas rien.
Et que dire de vos utilisateurs finaux confrontés au même problème ?

Ceci dit, je vous conseille d'utiliser mon prog. SauveXLB qui vous dépannera bien en cas de pépin de ce genre.
 
@

@+Thierry

Guest
Bonjour Léa, Dagada75

Bon alors cette question revient très souvent, (suite à des codes un peu foireux de gens qui ne maîtrisent pas vraiment le VBA, avec Ti nous sommes du même avis la dessus, pourquoi s'acharner à bidouiller Excel dans sa configuration de base, au risque de mettre le bazard sur les stations de plusieurs utilisateurs...)


J'ai eu l'idée de faire un Utilitaire de restauration des CommandBars d'Excel notamment la Barre de Menu ("WorkSheet Menu Bar") :

=> Lien supprimé

Sinon faire une recherche dans ce Forum à "Excel.xlb" qui est le fichier où Excel stock toutes les informations sur les personnalisations de l'application... Sa destruction pûre et simple remet Excel à "neuf"... Et aussi ne pas oublier le fichier de Ti Lien supprimé qui assure une sauvegarde de ce "Excel.XLB" (dispo dans la partie téléchargement du site)

Pour Léa, je me suis permis de regarder ton fichier et je te signale que tant que possible les macros "Auto_Open" et "Auto_Close" sont à éviter dans tout nouveau programme étant donné que ces macros "Automatiques" ont été remplacées depuis Excel 97 avec les fameuses Macro évènementielles à placer dans le Private Module de "ThisWorkBook" (Workbook_Open et Workbook_BeforeClose).

Pour l'instant ces macros passent encore mais nous avions vu que MS les signalaient obsolètes...

Bonne Journée à Tous et Toutes
@+Thierry
 
L

léa

Guest
Bonjour à tous
Bonjour Thierry,

Tu n'as pas à t'excuser pour le fait d'avoir regardé mon fichier, bien au contraire car ainsi tu m'apprends une chose que j'ignorais
Merci pour le conseil.
J'ai voulu tout simplement adapter la macro d'Access nommée "Autoexec";
Comme j'ai vu que ça marchait également pour Excel, alors voila.
Mais je vais suivre ton conseil et insérer mes macros dans le Private Module de Thisworkbook

Cordialement
Léa
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11