Ignorer la protection dans une macro (Résolu)

  • Initiateur de la discussion Initiateur de la discussion Smint
  • 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 !

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
 
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
 
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
 
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é....
 
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é
 
- 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
Retour