Icone "disquette" inactive

M

MisterJo

Guest
Bonjour le forum,

J'ai terminer au boulot un projet de manipulation de fichier excel et word grace aux aides de ce forum, mais jaimerai savoir si il y aurai moyen de rendre inactif l'icone de la 'disquette' présente dans la barre du menu ?

je dois ouvrir un document vierge, le renseigner et le valider par un bouton qui execute une macro. Tous fonctionne pil-poil jusqu'a ce qu'un utilisateur, pendant la saisie sur la feuille vierge clique sur la 'disquette' et donc écrase le fichier vierge :eek:hmy:

Je suis donc à la recherche d'un moyen permettant de rendre inactif la 'disquette' mais de quand même permettre les enregistrements dans les macros ?

J'ai ce problème de protection de feuille vierge avec des fichiers excel et avec des formulaires sous word (utilisation du ActiveDocument.SaveAs FileName:= )
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Misterjo, le forum

il faut utiliser une commande du type
Code:
Application.CommandBars('Standard').Controls('Enregistrer').Enabled = False
ne pas oublier de le remettre à true aprés en utilisant une routine de gestion d'erreur pour gérer tous les cas
Code:
Application.CommandBars('Standard').Controls('Enregistrer').Enabled = False
On Error GoTo Fin
'code à exécuter
Fin:
Application.CommandBars('Standard').Controls('Enregistrer').Enabled = True
End Sub

Cordialement, A+
 

Bobstriker

XLDnaute Nouveau
Bjr Yeaouh , MisterJo , le Forum,
je me permets cette intervention , avec le besoin de me corriger si cela est nécessaire.
j'ai écrit ceci , lié uniquement au nouveau fichier,qu'en pensez vous ?
ne bloque pas l'icone , mais alerte l'utilisateur avant sauvegarde
merci :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved = False Then
MsgBox ' Contactez votre référent avant enregistrement,merci. '
End If
End Sub
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Bobstriker

c'est une solution aussi, il faut par contre l'associer à une variable de test pour débloquer l'enregistrement pour les macros. Dans ton exemple, l'enregistrement se fait quand même.
voila ce que cela devrait donner avec une variable publique
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Test_Enr = True Then Cancel = True
End Sub
un simple Test_Enr = True bloque les enregistrement et Test_Enr = False les autorise.

Cordialement, A+
 
M

MisterJo

Guest
Merci à vous deux pour vos précisons mais il me semble que pour la solution de Yeahou on se trouve dans l'execution d'une macro non ? Quand une personnes ouvre un document vierge sous word, la macro d'enregistrement va être executer seulement à la fin lorqu'il clique sur le bouton qui va bien . Si il clique sur la disquette pendant la rédaction la macro n'est pas en 'run' et pas conséquent je ne vois pas comment ce code peut être opérationnel :huh:
A moins que quelque chose m'échappe ??

Pour la solution de Bobstriker, Yeahou signale qu'il faut déclarer une variable public mais je ne connais pas la procédure.

Pouvez vous éclairer ma lanterne ?

Merci d'avance.

MisterJo
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re

la macro Workbook_BeforeSave ne concerne que le classeur ou le document actif et il faut donc l'incorporer au document créé.
la désactivation du bouton, elle, se produira dés le code lancé et persistera pour tous les documents tant que l'instruction de réactivation n'aura pas été lancée (même en cas de fermeture et réouverture de l'application, à manipuler avec précaution, donc)

A+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re

la macro Workbook_BeforeSave ne concerne que le classeur ou le document actif et il faut donc l'incorporer au document créé.
la désactivation du bouton, elle, se produira dés le code lancé et persistera pour tous les documents tant que l'instruction de réactivation n'aura pas été lancée (même en cas de fermeture et réouverture de l'application, à manipuler avec précaution, donc)

A+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re

il faut déclarer une variable publique dans un module avec une déclaration de type
Public Test_Enr As Boolean
Cette variable sera alors accessible de toutes les procédures du classeur en cours à quelque moment que ce soit.

A+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour

la déclaration se fait dans un module et la définition peut se faire n'importe ou.
voila un exemple

A+

[file name=exemple_20060122143124.zip size=10477]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemple_20060122143124.zip[/file]
 

Pièces jointes

  • exemple_20060122143124.zip
    10.2 KB · Affichages: 21

Statistiques des forums

Discussions
312 452
Messages
2 088 540
Membres
103 879
dernier inscrit
JJB2