CommandBar [Résolu]

Morgan Kermor 20 Messages postés vendredi 9 décembre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 20 janv. 2006 à 15:13 - Dernière réponse : Morgan Kermor 20 Messages postés vendredi 9 décembre 2005Date d'inscription 25 janvier 2006 Dernière intervention
- 25 janv. 2006 à 11:14
Bonjour tout le monde...!
Voici ma macro:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Débloque la commande (Enregistrer Sous)
Application.CommandBars("File").FindControl(ID:=748).Enabled = True
'Débloque la commande (Edition)
Application.CommandBars.FindControl(ID:=30003).Enabled = True
'Débloque la commande (Affichage)
Application.CommandBars.FindControl(ID:=30004).Enabled = True
'Débloque la commande (Insertion)
Application.CommandBars.FindControl(ID:=30005).Enabled = True
'Débloque la commande (Format)
Application.CommandBars.FindControl(ID:=30006).Enabled = True
'Débloque la commande (Outils)
Application.CommandBars.FindControl(ID:=30007).Enabled = True
'Débloque la commande (Fenêtre)
Application.CommandBars.FindControl(ID:=30009).Enabled = True
'Débloque la commande (Aide)
Application.CommandBars.FindControl(ID:=30010).Enabled = True
'Débloque la commande (Données)
Application.CommandBars.FindControl(ID:=30011).Enabled = True
End Sub


Private Sub Workbook_Open()
'Bloque l'outil si son délai d'utilisation a expiré
test
'Bloque la commande (Enregistrer Sous)
Application.CommandBars("File").FindControl(ID:=748).Enabled = False
'Bloque la commande (Edition)
Application.CommandBars.FindControl(ID:=30003).Enabled = False
'Bloque la commande (Affichage)
Application.CommandBars.FindControl(ID:=30004).Enabled = False
'Bloque la commande (Insertion)
Application.CommandBars.FindControl(ID:=30005).Enabled = False
'Bloque la commande (Format)
Application.CommandBars.FindControl(ID:=30006).Enabled = False
'Bloque la commande (Outils)
Application.CommandBars.FindControl(ID:=30007).Enabled = False
'Bloque la commande (Fenêtre)
Application.CommandBars.FindControl(ID:=30009).Enabled = False
'Bloque la commande (Aide)
Application.CommandBars.FindControl(ID:=30010).Enabled = False
'Bloque la commande (Données)
Application.CommandBars.FindControl(ID:=30011).Enabled = False
End Sub

Seulement, j'ai un petit problème...
En fait, 1èrement quand elle s'éxécute et que "mon classeur" est toujours ouvert, elle s'éxécute sur tous les classeurs qui seront déjà ouvert ou à ouvrir, jusqu'à que je ferme "mon classeur".
2èment on peut feinter ma procédure, car si l'on fait fermer et finalement on annule toutes mes commandbar son débloquées


S'il vous plait aider moi....
Afficher la suite 

2 réponses

Meilleure réponse
kalobit 169 Messages postés mardi 15 juillet 2003Date d'inscription 7 avril 2008 Dernière intervention - 24 janv. 2006 à 14:35
3
Merci
Salut,
utlise les évènements activate et deactivate de workbook pour limiter l'application des modifications à ce classeur.

Ensuite, sache que les ID des contrôles peuvent différer d'une version de Excel à une autre ( 97 - 2000 - 2003). Tu riques d'avoir des soucis avec ce type de manipulation si tu distribue ton classeur.

Ensuite, pour éviter d'avoir des pb si les utilisateurs ferment et annulent, il faut programmer la fermeture de ton classeur avec l'affichage d'une msgbox et traitement de la réponse.

ex:

public Closing as boolean
workbook_beforeclose

if closing = true then exit sub

rep = msgbox("Fermeture du classeur", vbyesnocancel)
if rep vbcancel then cancel true :exit sub
else closing = true ' hé oui, variable obligatoire car on va coder la fermeture, ce qui va appeler l'evennement workbookbeforeclose une nouvelle fois
end if
désactiver_mes_modifications ' macro pour remettre les menus comme avant
if rep = vbyes then
thisworkbook.close, true
else
thisworkbook.close, false
end if

end sub

voilà, c'est du vite fait mais ce te donne l'idée générale. L'utilisation de la variable publique est indispensable pour gérer la récursivité (ça ce dit ?) du code et éviter l'affichage infini de la msgbox.

Bonne prog

[mailto:K@lobit K@lobit]

Merci kalobit 3

codes-sources a aidé 81 internautes ce mois-ci

Morgan Kermor 20 Messages postés vendredi 9 décembre 2005Date d'inscription 25 janvier 2006 Dernière intervention - 25 janv. 2006 à 11:14
0
Merci
Merci
La réponse est parfaite, en fait le fait de activate et deactivate résoud tous mes problème...
Comme un idiot je le faisais dans la procédure et pas en tant que private sub Workbook_Activate...
Thanks at all

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.