Sur excel avec vba masquer les menu et bloquer ctrl+s

vwtroudy
Messages postés
4
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 juillet 2009
- 7 juil. 2009 à 10:25
vwtroudy
Messages postés
4
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 juillet 2009
- 9 juil. 2009 à 02:09
Bonjour,

Tout est dans le titre,

Comment bloquer la combinaison ctrl+s et masquer les menu "fichier; édition; affichage..."

Merci

Vwtroudy

7 réponses

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
7 juil. 2009 à 13:33
Salut,

pourquoi ?

quel est l'objectif final ?

A+
0
vwtroudy
Messages postés
4
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 juillet 2009

7 juil. 2009 à 13:45
La finalité est d'utilisé uniquement un bouton créé sur la vue pour enregistrer et empécher tous les autres moyens.

Merci

Vwtroudy
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
7 juil. 2009 à 14:14
pas besoin de faire une usine à gaz !

dans le code de ThisWorkBook tu ajoutes ceci:

Private Sub Workbook_Open()
   SaveByCode = False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   If SaveByCode = False then
      Cancel = True
   Else
      Cancel = false
   End If
   If Cancel = True Then MsgBox "Ce fichier ne peut etre sauvé par l'utilisateur ! " & vbCrLf & _
                                                     "Veuillez utiliser le bouton prevu a cet effet!", vbExclamation
End Sub

En haut d'un module tu mets ceci:

Public SaveByCode As Boolean

et dans le code de ton bouton pour la sauvegarde tu mets:

Private Sub CommandButton1_Click()
   SaveByCode = True
   ThisWoorkBook.Save
   SaveByCode = False
End Sub
0
vwtroudy
Messages postés
4
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 juillet 2009

7 juil. 2009 à 16:55
je vais tester demain soir et je vous tiens au courant mais quand bigfish parle de ça:"
En haut d'un module tu mets ça"... chui un peu novice, c'est ou le module???

merci de votre aide précieuse

Vwtroudy
0

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

Posez votre question
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
7 juil. 2009 à 18:01
pfffff !... bon voici quelques explications:

la fenetre dans la quelle on ecrit le code s'appelle VBE(Visual Basic Editor).

A gauche de la fenetre VBE il devrait y avoir le "Projects Explorer" (l'explorateur de projets) si ce n'est pas le cas tu vas dans le menu affichage et tu le coches.

Dans l'explorateur de projets tu vas trouver ton projet qui s'appel:   VBAProject (nom de ton classeur.xls)

dans VBAProject (nom de ton classeur.xls) tu vas trouver une icone qui represente un repertoire "Microsoft Excel Objects" et qui contient le code des feuilles de ton classeur et le code du classeur lui meme "ThisWorkBook". Puis tu double clicks sur "ThisWorkBook" pour ouvrir la page de code.

Donc dans la page de code de ThisWorkBook tu y colles ceci:

Private Sub Workbook_Open()
   SaveByCode = False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   If SaveByCode = False then
      Cancel = True
   Else
      Cancel = false
   End If
   If Cancel = True Then MsgBox "Ce fichier ne peut etre sauvé par l'utilisateur ! " & vbCrLf & _
                                                     "Veuillez utiliser le bouton prevu a cet effet!", vbExcla de code mation
End Sub

En suite tu click droit sur: VBAProject (nom de ton classeur.xls)
et dans le petit menu contextuel qui apparait tu fais : insertion, module

tu double clicks sur module1 et tu lui colle : Public SaveByCode As Boolean

Enfin pour le bouton il suffit de le créer dans ta feuille puis de faire un click droit dessus et de selectionner : Visualiser le code
Cela aura pour consequence de te basculer le vbe, directement dans la page de code de la feuille dans la quelle ta as créé le bouton.
Dans cette page de code tu vas y trouver ceci:

Private Sub CommandButton1_Click()

End Sub

il te faut maintenant rajouter 3 ligne de code pour obtenir ceci:

Private Sub CommandButton1_Click()
   SaveByCode = True
   ThisWoorkBook.Save
   SaveByCode = False
End Sub

maintenant tu sauve ton classeur (dans excel pas dans le vbe)
Tu le fermes et tu le réouvre.

voila essai Ctrl+S ou de sauver par la methode classique
0
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
8 juil. 2009 à 00:31
Bonsoir,

Une p'tit optimisation du code :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not SaveByCode Then
    MsgBox "Ce fichier ne peut etre sauvé par l'utilisateur ! " & vbCrLf & _
                "Veuillez utiliser le bouton prevu a cet effet!", vbExclamation
    Cancel = True
End If
End Sub

C'est un peu (voir beaucoup) pour le plaisir...

Ensuite, je signale un bug... oui, c'est bizarre, mais vrai. IL y a un bug, si le classeur n'a jamais était enregistré une fois avant le code proposé... Le bug se situe sur ThisWoorkBook.Save... avec Objet requis.... En effet, Save ne peut fonctionner que si SaveAs a fonctionné une fois au moins...

Je propose :

Private Sub CommandButton1_Click()
   SaveByCode = True
   ActiveWorkbook.Save
   SaveByCode = False
End Sub

Amicalement,
Us.
0
vwtroudy
Messages postés
4
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 juillet 2009

9 juil. 2009 à 02:09
Merci à tous, ça marche très bien.

@+

Vwtroudy
0