[Catégorie modifiée .Net --> VBA] vba s'applique en permanence

Résolu
cs_guedon Messages postés 4 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 31 décembre 2010 - 29 déc. 2010 à 05:56
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 31 déc. 2010 à 07:45
Bonjour,
Voila je viens de faire mes premiers pas dans Excel et je ne crois pas avoir réussi...

j'ai placé dans workbook ce code afin que les utilisateurs ne puisse pas sauvegarder le fichier sur lequel il travail...

Private Sub Workbook_Open()

With Application.CommandBars("Standard")
.Controls("Enre&gistrer").Enabled = False
End With
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Fichier").Enabled = False
End With

'desactive le raccourci clavier Ctrl+S
Application.OnKey "^s", ""

End Sub

Mon probleme est que 1) je suis un vrai debutant et 2) maintenant cette fonction est en permanence dans excel... Dur... dur

Un champion est-il capable de m'aider ??? ou de m'expliquer simplement ce que j'ai fais afin de revenir à l'état initiale.

Par avance merci de votre aide

7 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 déc. 2010 à 07:45
Bonjour,
Arf.. je lis en diagonale ce matin... pfffuiii...
enfin bon.
Pour ce qui est de "mon" code.. enfin.. celui que j'ai trouvé .. voici l'explication :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "vous ne pouvez pas enregistrer ce claasseur"
Cancel = True
End Sub

'NB : Code à placer dans l'objet "ThisWorkbook" de ton classeur 



J'utilise la méthode : Workbook_BeforeSave
C'est à dire qu'elle se déclenche AVANT de sauvegarder (au moment ou tu cliques sur enregistrer).
En argument de cette methode il y à la "variable" (ou "argument") CANCEL.
En le mettant à TRUE, je lui demande en gros de ne pas sauvegarder (de "quitter" la fenetre sauvegarder".

Voila.. grosso modo ce que ça fait

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
3
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
29 déc. 2010 à 08:36
Bonjour,
tu pourrais placer un code de "retour arrière" qui se déclencherai lorsque ton classeur se ferme.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application.CommandBars("Standard")
    .Controls("Enre&gistrer").Enabled = True
End With
With Application.CommandBars("Worksheet Menu Bar")
    .Controls("Fichier").Enabled = True
End With


End Sub


Par contre;.... faut bien être conscient que TANT QUE ton classeur est ouvert la désactivation de la sauvegarde est active !!!!

Si tu ne veux vraiment empecher la sauvegarde QUE de CE CLASSEUR, je te conseille plutot de regarder la Méthode
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "vous ne pouvez pas enregistrer ce claasseur"
Cancel = True
End Sub


Voila..

PS: Pour tes prochains post, pense à utiliser les balises de code pour placer tes script.
Ca rend le sujet plus lisible.

PS² : Si la réponse te convient, pense à mettre le sujet en résolu (cliquer sur Réponse acceptée).

Merci.


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_guedon Messages postés 4 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 31 décembre 2010
29 déc. 2010 à 09:34
Merci Jordane,

Mais mon probleme n'est plus de proteger la sauvegarde de ce ficchier mais de retrouver toute mes fonctions Excel....
En clair maintenant quand j'ouvre Excel je n'ai plus accé aux fonction que j'avais interite... donc j'ai du placer mon code au mauvais endroit et maintenant je suis dans la mer...
Encore merci de ton aide
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
29 déc. 2010 à 10:01
Bonjour,
écrit le code que je t'ai donné (le premier) dans un classeur et lance le.
Il devrait rétablir les fonctions.

Sinon, tu peux toujours utiliser la réparation d'excel.
Si tu es sous 2000 - 2003 tu vas sur le "?" et tu cliques sur Detecter et réparer
Tu suis les instructions.. et ça devrait être bon.


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0

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

Posez votre question
cs_guedon Messages postés 4 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 31 décembre 2010
29 déc. 2010 à 11:27
Merci,

Je te donne le résultat demain car ici à 22 000 km dans le pacifique il est très tard et je ne suis plus au boulot encore mille merci, je te tiens au courant.
0
cs_guedon Messages postés 4 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 31 décembre 2010
31 déc. 2010 à 01:21
Bien,

Me revoici, donc j'ai pris la solution de réparer excel et oh !!! bonheur tout est revenu... C'est bien mais cela ne me dis pas ce qui s'est passé...

Donc je reviens à mon interdiction de sauvegarder mon fichier je vais utiliser ta méthode mais comme j'aime bien comprendre ce que je fait peux tu m'explique ce que cela fait ???

Encore merci de votre aide

BONNE ET HEUREUSE ANNÉE 2011
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 déc. 2010 à 07:31
Bonjour,
éhéhéhéh ^^...
en fait si tu regardes ton code :
With Application.CommandBars("Standard") 
.Controls("Enre&gistrer").Enabled = False 
End With 
With Application.CommandBars("Worksheet Menu Bar") 
.Controls("Fichier").Enabled = False 
End With 


avec un peu d'anglais ça devient "façile" de comprendre :

Tu demandes à ce que le bouton "Enregistrer" et le menu "Fichier" dans les barres de menus (CommandBars) soient désactivés (Enable=false).

C'est pour ça que dans "mes" solutions je te proposais de faire l'inverse : les remettre à TRUE pour les réactiver.
Le fait d'avoir fait un "réparer" de ton XL... remet les barres de menus par défaut. Tu as aisni pu retrouver tes menus manquants.

PS: Si la réponse te convient, penses à passer le sujet en résolu ( Cliquer sur "Réponse Acceptée").

Bonne continuation et.. bonne année (un peu en avance. )
Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Rejoignez-nous