OVH Cloud OVH Cloud

Verouiller feuilles & AllowEditRanges

6 réponses
Avatar
Céline
Bonjour =E0 tous

Me voici =E0 nouveau devant un probl=E8me titanesq :s

voici ma situation

J'ai cr=E9=E9 un classeur .xls qui comporte plusieurs onglets

Je voudrais verouiller l'ensemble des FEUILLEs de mon classeur, avec un
ensemble de zones d=E9verouill=E9es (sans mot de passe) qui r=E9pondent
aux conditions suivantes
- ces plages n'existent ou n'existent pas selon les feuilles de mon
classeur
(ex Les feuilles Feuil1 et Feuil3 n'ont aucune zone de verouillage,
alors que l'on peut modifier les champs
A1, A6 B10 de la feuille Feuil2)
- ces plages varient selon le mode d'ouverture du classeur, mode choisi
par l'interm=E9diaire dun userform appel=E9 lors de la proc=E9dure
Before_open

Pour modifier mes zones de verouillage, si je comprends bien, je dois
d=E9verouiller ma feuille, supprimer les alloweditranges qui existent,
puis cr=E9er d'autres allowedit ranges
Malheureusement je ne comprends pas comment fonctionne le :
=2EProtection.AllowEditRanges.Item(i).delete
Au d=E9but je croyais que tant que au moins une feuille =E9tait
verouill=E9e, on n'effacait pas r=E9ellement ces item m=EAme depuis une
autre feuille..
Alors j'ai d=E9cid=E9 de
1=2E d=E9verouiller l'ensemble des feuilles
2=2E pour chaque feuille, effacer toutes les zones existantes
Mais ce dont je me suis rendue compte c'est que dans certains cas, ex
lorsque j'ai 11 ou 12 zones, mon vba ne m'en efface que 5 ou 6...

Voici mon code g=E9n=E9ral

Private Sub Workbook_Open()
'tout un tas de commandes qui permettent d'initialiser
Etat_Utilisateur
Select Case Etat_Utilisateur
Case Is =3D 1
'protection nulle : mod=E9rateur
Effacer_Zones_De_Travail
Case Is =3D 2
'protection pour Gars Type1
Effacer_Zones_De_Travail
For Each feuille In Worksheets
Ajouter_Zones_Travail (feuille.Name)
Next feuille
For Each feuille In Worksheets
feuille.Protect Password =3D "celine"
Next feuille
Case Is =3D 3
'protection pour Gars Type2
Effacer_Zones_De_Travail
For Each feuille In Worksheets
Ajouter_Zones_Travail (feuille.Name)
Next feuille
For Each feuille In Worksheets
feuille.Protect Password =3D "celine"
Next feuille
End Select
End sub

//Module1 :

Sub Effacer_Zones_De_Travail(Optional entry As String)
For Each feuille In Worksheets
If feuille.ProtectContents =3D True Then feuille.Unprotect Password =3D
"celine"
Next feuille
For Each feuille In Worksheets
For i =3D 1 To feuille.Protection.AllowEditRanges.Count
feuille.Protection.AllowEditRanges.Item(1).Delete
Next i
Next feuille
End Sub

Sub Ajouter_Zones_Travail(Onglet_A_Proteger As String)
On Error Resume Next
If Left(Worksheets(Onglet_A_Proteger).Range("C1").FormulaLocal, 8) =3D
"SALUT" Then
Select Case Etat_Utilisateur
Case Is =3D 2
With
Worksheets(Onglet_A_Proteger).Protection.AllowEditRanges
.Add Title:=3D"Atelier", Range:=3DRange("C4:D4")
.Add Title:=3D"Client", Range:=3DRange("C6:D7")
.Add Title:=3D"Dessinateur", Range:=3DRange("C9:D9")
.Add Title:=3D"Designation1", Range:=3DRange("D16:D38")
.Add Title:=3D"Designation2", Range:=3DRange("D40:D78")
.Add Title:=3D"Designation3", Range:=3DRange("D80:D116")
End With
Case Is =3D 3
With
Worksheets(Onglet_A_Proteger).Protection.AllowEditRanges
.Add Title:=3D"Dessinateurs", Range:=3DRange("C10:D10")
.Add Title:=3D"Armoire Electrique",
Range:=3DRange("C12:D12")
.Add Title:=3D"Rep1", Range:=3DRange("A16:B38")
.Add Title:=3D"Rep2", Range:=3DRange("A40:B78")
.Add Title:=3D"Rep3", Range:=3DRange("A80:B116")
End With
End Select
End If 'si la feuille est une vignette
End Sub

Merci au(x) courageux qui vont se pencher sur ce code ! !!
Bonne journ=E9e
C=E9line

6 réponses

Avatar
Patrick Penet
Merci au(x) courageux qui vont se pencher sur ce code ! !!


Ya pad coi.

Voilà ce que je comprend (mais me gourre-je ?) :

Comment contrôler l'affichage et l'accessibilité en fonction
du niveau d'un utilisateur ?

Il me parait plus simple d'éjecter l'utilisateur si
il ne doit pas avoir accès à cette cellule dans cette
feuille sans utiliser les diverses protections d'Excel
dans les évènements WorkSheet.Change et
WorkSheet.Selection.Change.

Ou alors faire une UF pour la saisie ?

Bonne journée
Céline


Bonne nuit.
PP

Avatar
Céline
bonjour Patrick,

Merci pour ta suggestion, et effectivement, pourquoi pas, si j'arrive
pas à m'en sortir avec ces allowedit, je passerai par
worksheet_Change, même si ma procédure est déjà ma foi bien remplie
euh, question, c'est koi UF ? Unité de Fabrication, Union des Fous ?
Lol
n'jour'nuit !
Céline
Avatar
Céline
(Problème du matin.... chagrin)

rebonjour Patrick,
petite rectification

For i = 1 To feuille.Protection.AllowEditRanges.Count
feuille.Protection.AllowEditRanges.Item(1).Delete
Next i
--> correction : il n'efface rien, en fait


pourtant la boucle boucle.
bref

Céline (essaie quand même de se battre avec VBE)
Avatar
Céline
dernier petit détail... :p
en fait cette histoire de verrouiller les cellules m'arrange bien parce
que cette option bloque aussi toute la mise en forme des cellules de
mon classeur, y-compris celles qui sont déverouillées...

Mais mon problème de alloweditranges qui ne veut pas se résoudre est
ma foi bien épineux
ou bien ai-je la fote devant les yeux mais qu'elle ne m'apparait
pas....

(quelqu'un aurait-il une lampe torche pour m'éclairer ? besoin de we,
moi..)
'n'soirée
Céline
Avatar
Jean-Paul V
Bonjour Céline

Vu mon niveau,je ne crois pas que je pourrais vous aider,je suis entrain
d'étudier un problème de protection et je pense que votre fichier en l'état
m'apprendrait des tas de choses pouvez-vous le mettre à disposition dans
ci-joint s'il n'y a rien de confidentiel.

Je crois comprendre que vous utilisez plusieurs niveaux de protections,ce
sujet m'intéresse.



dernier petit détail... :p
en fait cette histoire de verrouiller les cellules m'arrange bien parce
que cette option bloque aussi toute la mise en forme des cellules de
mon classeur, y-compris celles qui sont déverouillées...

Mais mon problème de alloweditranges qui ne veut pas se résoudre est
ma foi bien épineux
ou bien ai-je la fote devant les yeux mais qu'elle ne m'apparait
pas....

(quelqu'un aurait-il une lampe torche pour m'éclairer ? besoin de we,
moi..)
'n'soirée
Céline




Avatar
Céline
bonjour PJ - V
désolée den'avoir donné de nouvlles avant, mais j'étais en we bien
mérité
y'a pas de pb pour un peu d'aide sur les niveaux de proection, mais
vous mettre mon classeur à disposition ne serait pas forcément un
cadeau, vu la quantité de code qu'il a dessus, vous vous croireriez
(sic ?) en pleine foret amazonnienne.
Avezvous des questions plus précises sur le sujet?
Bon début de semaine !
Céline