Comment protéger des feuilles contre l'effacement?

  • Initiateur de la discussion Initiateur de la discussion Aloha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aloha

XLDnaute Accro
Bonjour,

Y a-t-il une méthode, dans Excel 2003, pour éviter qu'une feuille ne soit effacée par erreur?

Il faut qu'elle reste modifiable.

Merci pour tout tuyau

Aloha
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour



Une solution par macro

Code:
Sub Macro1()
ActiveWorkbook.Protect Structure:=True, Windows:=True
End Sub

Corresponds à : Outils/Protection/Protéger le classeur

(test ok sur XL 2000)
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour Aloha,

Si ta feuille reste modifiable on peut également en effacer les données.

Pour faire ce que tu demandes, tu vas dans Format/Cellule, onglet Protection après avoir selectionné les cellules que tu veux modifiables et tu décoches Vérouillée (elles sont toutes vérouillées par défaut)

Pour finir Outils/Protection avec ou sans mot de passe et tu protèges.

Bon AM.

Jean-Pierre
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour,

Merci, Jean-Pierre et "JM", pour vos réponses.

Jean-Pierre, ta solution n'empêche pas l'effacement de feuilles, mais seulement de cellules à l'intérieur d'une feuille.

"JM", ta solution fonctionne, mais elle rend toutes les feuilles ineffaçables, alors que je dois garder la possibilité d'en effacer certaines.

ESt-ce qu'elle peut s'appliquer aux feuilles individuelles?

Que faut-il d'ailleurs ajouter au code pour qu'il s'exécute automatiquement à chaque démarrage de Excel?

Bon dimanche

Aloha
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour


Essayes avec ce code ... mais bon euh 🙄


Code:
Sub Macro1()
Dim access_granted$, check_user
access_granted = "ForumXLD"
ActiveWorkbook.Protect Structure:=True, Windows:=True
check_user = _
            InputBox(vbLf & vbLf & vbTab & "Identifiez-vous!", _
            "LE CERBERE VEILLE SUR CE CLASSEUR", _
            "Saisir votre mot de passe")
Select Case check_user
Case access_granted
ActiveWorkbook.Unprotect
Case Else
ActiveWorkbook.Protect Structure:=True, Windows:=True
End Select
End Sub
 
Re : Comment protéger des feuilles contre l'effacement?

Rebonjour "JM",

Formidable de ta part de répondre aussitôt, un dimanche matin, avec un nouveau code.

Merci.
Lorsque j'applique ton code il y a un conflit avec une autre macro qui ne fonctionne plus alors.
Ce code aussi s'applique au classeur entier et il faut le lancer à chaque démarrage.
N'existe-t-il pas une possibilité de protéger durablement certaines feuilles individuelles d'un classeur?
Je pensais que, techniquement parlant, une solution intégrée dans Excel (sans VBA donc) devrait être possible. Cela ne semble donc pas être le cas.

A+

Aloha
 
Re : Comment protéger des feuilles contre l'effacement?

Re

• La solution intégrée est celle décrite plus (cf -> Lien supprimé
Outils/Protection/Protéger le classeur.

D'autant que sur Excel 2003, il y a des options supplémentaires par rapport à XL 2000 ( qui est la version que j'utilise)

• Pour le message d'erreur, une suggestion :
renomme ma macro avec un autre nom.
 
Re : Comment protéger des feuilles contre l'effacement?

Re

Tu as mal saisi la démarche de mon code VBA posté à 09h29

Le code exécute par exemple à l'ouverture du classeur

Si tu es l'utilisateur usuel du classeur, tu saisis le mot de passe
et alors tu as plein accès en modification au classeur.

Si c'est quelqu'un d'autre qui utilise le classeur, il saisira un mot de passe
erroné et le classeur restera protégé.

Tu peux aussi, dans le reste de ton code faire appel à ce code avant de lancer une action non ?
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour

Si on regarde les événements classeur et feuille, la suppression n'est pas un événement : il n'est donc pas facile de l'intercepter en VBA.

Mais certains on peut-être trouver un contournement... sachant que la demande de suppression passe par l'évenement deactivate.
Pour l'instant je sèche...

Edit : l'événement deactivate arrive après la suppression donc trop tard pour intercepter
Donc a priori seule solution : n'autoriser la suppression que via un bouton qui déclenche une macro qui analyse la demande et l'accepte ou la refuse selon l'onglet.
 
Dernière édition:
Re : Comment protéger des feuilles contre l'effacement?

Rebonjour "JM",
Bonjour Chris,

"JM", désolé de te faire travailler autant un dimanche. Merci pour la peine que tu t'es donnée.

En ce qui concerne l'exécution de ton code, j'ai compris. Seulement, j'ai un certain nombre de sub indépendantes; il faut donc que je l'appelle par chaque sub.

Malheureusement l'insertion d'une nouvelle feuille n'est plus possible.
A moins de faire exécuter, lorsqu'une nouvelle feuille doit être créée -et elle l'est exclusivement par une macro- un code qui enlève la protection à nouveau.

Cette feuille qui doit être créée, est effacée dès qu'elle est imprimée et c'est justement pour parer au risque d'effacer d'autres feuilles que je veux cette protection.

Idéalement il me faudrait donc une routine qui me servirait à effacer la feuille qui a comme nom un chiffre de 1 à 12, et qui empêcherait l'effacement de toute autre feuille.

En y réfléchissant bien je crois que ce que je veux est trop difficile à réaliser.

Chris,

Merci de t'être intéressé à mon petit problème.
Bonne soirée

Aloha
 
Dernière édition:
Re : Comment protéger des feuilles contre l'effacement?

Bonsoir le fil, le forum,

Idéalement il me faudrait donc une routine qui me servirait à effacer la feuille qui a comme nom un chiffre de 1 à 12, et qui empêcherait l'effacement de toute autre feuille.

En y réfléchissant bien je crois que ce que je veux est trop difficile à réaliser.

Quand le problème est clairement posé, on trouve généralement une solution.

Mettre dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim tablo
tablo = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")
If IsError(Application.Match(Sh.Name, tablo, 0)) [COLOR="Red"]And IsEmpty(Source.Cells(1, 1))[/COLOR] Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

C'est juste l'effacement qui est rendu impossible (code en rouge), pas l'entrée de données.

J'espère que c'est bien ce que vous voulez. Sinon reformulez le problème.

A+
 
Dernière édition:
Re : Comment protéger des feuilles contre l'effacement?

Re,

Relisant le fil, j'ai l'impression que ce que vous voulez éviter c'est l'effacement de toute la feuille, et non pas l'effacement de cellules individuelles.

Dans ce cas modifiez le code comme suit :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim tablo
tablo = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")
If IsError(Application.Match(Sh.Name, tablo, 0)) [COLOR="Red"]And Application.CountA(Sh.Cells) = 0[/COLOR] Then
Application.EnableEvents = False
On Error Resume Next
Application.Undo
Application.EnableEvents = True
End If
End Sub

Edition : attention, la méthode Undo échoue si l'effacement est programmé par macro. Pour éviter l'apparition d'une erreur dans ce cas, j'ai ajouté On Error Resume Next.

A+
 
Dernière édition:
Re : Comment protéger des feuilles contre l'effacement?

Bonjour "Job75",

Merci à vous de me proposer une solution.

Cependant, lorsque je colle le code dans VBA, je ne constate aucun effet: je peux effacer autant les feuilles portant un chiffre comme nom, que toutes les autres feuilles!

Bonne journée

Aloha
 
Re : Comment protéger des feuilles contre l'effacement?

Bonjour Aloha, le fil, le forum,

Mais qu'avez-vous donc fait ??

[Edit] J'avais pourtant écrit :

Mettre dans ThisWorkbook

Fichiers ci-joints.

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
884
Réponses
5
Affichages
288
Réponses
5
Affichages
402
Retour