Ignorer la protection dans une macro (Résolu)

Smint

XLDnaute Junior
Bonsoir à tous....

Dans un tableau que je cherche à verrouiller un maximum, afin qu'il ne soit pas vérolé par un clic malencontrueux, cette macro est assez souvent exécutée:

Sub EffaceDonnées()
'
' EffaceDonnées Macro
' Macro enregistrée le 08/03/2006 par ouam
'
' Touche de raccourci du clavier: Ctrl+s
'
Range('D2:E1000').Select
Selection.ClearContents
ActiveWindow.ScrollRow = 2
Range('G1').Select
End Sub


Le problème:

Dans la sélection 'D2:E1000', il y a des cellules verrouillées qui ne contiennent et ne doivent pas contenir de données et la macro, de ce fait, refuse de s'exécuter quand la feuille est en mode protection....

Est-il possible de modifier le code, si oui, comment, pour que cette macro passe outre ce verrouillage et s'exécute, même en mode protection des données?

Merci de me faire partager, encore une foi, vos lumières....

Message édité par: Smint, à: 16/03/2006 18:22
 

CBernardT

XLDnaute Barbatruc
Re:Ignorer la protection dans une macro

Bonjour Smint,

Tu peux passer outre en déprotégeant la feuille pour exécuter la macro et en reprotégeant la feuille aussitôt après.

Le code est du style :
Sub EffaceDonnées()
'Déprotection de la feuille
With ActiveSheet
.EnableSelection = xlNoRestrictions
.Unprotect Password:='***'
End With
' Action à réaliser
Range('D2:E1000').ClearContents
ActiveWindow.ScrollRow = 2
Range('G1').Select
'Reprotection de la feuille
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect Password:='***', Contents:=True, UserInterfaceOnly:=True, Scenarios:=True
End With
End Sub

Le mot de passe est *** (Trois étoiles)

Cordialement

Bernard
 

Robert

XLDnaute Barbatruc
Repose en paix
Re:Ignorer la protection dans une macro

Bonjour Smint, bonjour le forum,

Il y a des méthodes plus élaborées mais je te propose celle qui consiste à déprotéger l'onglet en début de code et à le reprotéger à la fin du code :


Sub EffaceDonnées()
ActiveSheet.Unprotect
Range('D2:E1000').Select
Selection.ClearContents
ActiveWindow.ScrollRow = 2
Range('G1').Select
ActiveSheet.Protect
End Sub

Édition :

Bonjour Bernard ! 2 fois quon se télescope... On fait un constat ?


Message édité par: Robert, à: 16/03/2006 17:09
 

Smint

XLDnaute Junior
Re:Ignorer la protection dans une macro

Salut vous deux, merci de vos participations...

Je venais, tout content, dire que j'avais trouvé comment faire....

Sub EffaceDonnées()
'
' EffaceDonnées Macro
' Macro enregistrée le 08/03/2006 par ouam
'
' Touche de raccourci du clavier: Ctrl+s
'
ActiveSheet.Unprotect
Range('D2:E1000').Select
Selection.ClearContents
ActiveWindow.ScrollRow = 2
Range('G1').Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


J'avais bien pensé à Déprotéger/Reprotéger mais je ne connais pas le VB... En fait, j'ai créé deux macros permettant de faire la manip et comme, grace à ce forum, j'ai appris précédemment à utiliser un peu l'éditeur de code, j'ai pu récupérer les lignes adéquates et les insérer au bon endroit....

Bref, ça marche, youpiiii....

Merci encore et bonne soiré....
 

coco_lapin

XLDnaute Impliqué
Re:Ignorer la protection dans une macro

Bonjour Smint et le forum.

Le lien en annexe te montre aussi comment protéger les feuilles tout en pouvant écrire sur ces feuilles sans les déprotéger (utilisation de Userinterfaceonly). C'est très pratique.


Lien supprimé
 

Discussions similaires

Statistiques des forums

Discussions
312 582
Messages
2 089 953
Membres
104 317
dernier inscrit
UMP