OVH Cloud OVH Cloud

Verrouiller un onglet

14 réponses
Avatar
Céline
Bonjour

J'ai créé un classeur excel standard avec plusieurs feuilles qui va être
utilisé par différents utilisateurs.
Cependant, un autre type de classeur va accéder à ce premier classeur pour
en modifier certaines pages : est-il possible de verrouiller ces pages en
particulier de mon classeur standard, de manière à ce qu'elles puissent être
modifiées (contenu des cellules etc.) par les utilisateurs ou d'autres
fichiers, mais qu'elles ne puissent pas être supprimées et que le nom de la
feuille soit bloqué?
[En effet, la méthode protect semble protéger le contenu de la feuille mais
la feuille en elle-même]

Merci beaucoup par avance!!
Céline

10 réponses

1 2
Avatar
Sunburn
protège le classeur, comme ça le nom et la feuille sont protéger (pas de
suppression, pas de modif du nom)
Yann


Bonjour

J'ai créé un classeur excel standard avec plusieurs feuilles qui va être
utilisé par différents utilisateurs.
Cependant, un autre type de classeur va accéder à ce premier classeur pour
en modifier certaines pages : est-il possible de verrouiller ces pages en
particulier de mon classeur standard, de manière à ce qu'elles puissent être
modifiées (contenu des cellules etc.) par les utilisateurs ou d'autres
fichiers, mais qu'elles ne puissent pas être supprimées et que le nom de la
feuille soit bloqué?
[En effet, la méthode protect semble protéger le contenu de la feuille mais
la feuille en elle-même]

Merci beaucoup par avance!!
Céline


Avatar
Céline
Merci pour ta réponse !
Malheureusement, après avoir essayé la méthode protect sur le classeur je me
rends compte que je ne peux plus créer de feuilles.
Or ce que je voulais c'était protéger deux feuilles en particulier et qu'en
dehors de celles-ci l'utilisateur puisse créer/ modifier / supprimer /
renommer d'autres feuilles sans problème...
:s
J'ai essayé de parcourir les méthodes proposées par l'objet application mais
aucune semble me convenir...
Y a-t-il un moyen de déjouer cette ambiguité ?
Merci beaucoup (& bon we!!)
Avatar
Sunburn
Sub ProtectionFeuille()
tabl = Array("feuil1", "feuil2")
For i = LBound(tabl) To UBound(tabl)
With Sheets(tabl(i))
.Activate
.Protect
End With
Next
End Sub

pour protéger ta feuille. Mais si la barre "Outils" est toujours active,
n'importe qui peut faire "Outils / déprotéger la feuille", le mieux c'est de
cacher cette barre d'outils, ou de protéger par mot de passe.

BYE et bon WE
yann





Merci pour ta réponse !
Malheureusement, après avoir essayé la méthode protect sur le classeur je me
rends compte que je ne peux plus créer de feuilles.
Or ce que je voulais c'était protéger deux feuilles en particulier et qu'en
dehors de celles-ci l'utilisateur puisse créer/ modifier / supprimer /
renommer d'autres feuilles sans problème...
:s
J'ai essayé de parcourir les méthodes proposées par l'objet application mais
aucune semble me convenir...
Y a-t-il un moyen de déjouer cette ambiguité ?
Merci beaucoup (& bon we!!)


Avatar
J
Bonjour Céline
juste un détail pour compléter : tu peux modifier la ligne .protect
comme suit, pour mettre par macro un mot de passe :
.Protect Password:="toto", userinterfaceonly:=True

Bon courage
J@@

Sub ProtectionFeuille()
tabl = Array("feuil1", "feuil2")
For i = LBound(tabl) To UBound(tabl)
With Sheets(tabl(i))
.Activate
.Protect
End With
Next
End Sub

pour protéger ta feuille. Mais si la barre "Outils" est toujours active,
n'importe qui peut faire "Outils / déprotéger la feuille", le mieux c'est de
cacher cette barre d'outils, ou de protéger par mot de passe.

BYE et bon WE
yann





Merci pour ta réponse !
Malheureusement, après avoir essayé la méthode protect sur le classeur je me
rends compte que je ne peux plus créer de feuilles.
Or ce que je voulais c'était protéger deux feuilles en particulier et qu'en
dehors de celles-ci l'utilisateur puisse créer/ modifier / supprimer /
renommer d'autres feuilles sans problème...
:s
J'ai essayé de parcourir les méthodes proposées par l'objet application mais
aucune semble me convenir...
Y a-t-il un moyen de déjouer cette ambiguité ?
Merci beaucoup (& bon we!!)




Avatar
Excel...lent
Salut Céline,

Dans VBE sur les feuilles que tu veux planquer tu passes la propriété
"visible" sur "xlSheetVeryHidden" .

Ensuite toujours de VBE tu protèges ton projet VBA et normalement si mes
souvenirs sont bons tu ne dois plus voir tes feuilles en question et surtout
ne plus pouvoir y accéder en dehors de VBE.

Pour les voir de nouveau il te faudra accéder au projet VBA de ton classeur
( après avoir donné ton MP ) et ensuite repasser la propriété "visible" sur
"xlSheetVisible".

Cordialement.

Marc
Avatar
Céline
bonjour,
Merci à tous pour vos conseils, malheureusement je ne suis pas encore
satisfaite... :p
Je vais prendre un esxemple pour mieux expliquer mon prblème :
dans mon workbook "wrkbk" j'ai à la base 2 sheets : "feuil1" et "feuil2".
Lorsque mon utilisateur ouvre "wrkbk", il doit compléter certains champs de
"feuil1" et "feuil2", mais je ne ve pas qu'il puisse ni supprimer ni renommer
ces deux feuilles (--> fct Xlsheetvisible et wrksheet.protect impossible).
A la suite de cela, il doit insérer une ou pls nouvelles feuilles (nombre
inconnu) qu'il va devoir remplir, renommer "feuil3" --> "TagadaTsoinTsoin"
et/ou éventuellement supprimer ! ! (fct Workbook.protect impossible)
est-il possible d'utiliser la fonction wrkbk.protect en laissant certaines
fonctions accessible (ex. la fonction insérer/nouvelle feuille), ou mon
problème a-t-il de fortes chances de rester insoluble ?
:s :s
Merci & Bonne journée !
Céline
Avatar
Excel...lent
Salut Céline,

Pourquoi ne pas enregistrer ton fichier en * Modèle * .

Avantage : l'utilisateur de ton fichier ne pourra pas changer le modèle
puisque celui-ci en s'ouvrant ouvre en fait une copie de lui-même.

Cordialement.

Marc
Avatar
Céline
Effectivement l'idée est bonne;
mais le problème reste le même sur la copie créée par l'utilisateur : il
pourra toujours faire les manip qu'il veut. L'ennui étant que ces fameuses
feuilles "Feuil1" et "Feuil2" sont appelées par des macros VBE (de ce
classeur ou d'autres classeurs)
:s :s
Cordialement
Céline
Avatar
JLuc
*Bonjour Céline*,
Ce que je peux te proposer, c'est d'utiliser le CodeName de tes
feuilles dans tes macros. De cette façon, même si l'utilisateur change
le nom de l'onglet, tes macros pointeront toujours sur la bonne feuille
:
Dans l'explorateur de projet :

-->Feuil1(TagadaTsoinTsoin)
Feuil1 = CodeName
TagadaTsoinTsoin = Nom donné à l'onglet

Dans tes macros :
Au lieu de : ...Sheets("TagadaTsoinTsoin").Range(.....
Tu mets : ...Feuil1.Range(...


Effectivement l'idée est bonne;
mais le problème reste le même sur la copie créée par l'utilisateur : il
pourra toujours faire les manip qu'il veut. L'ennui étant que ces fameuses
feuilles "Feuil1" et "Feuil2" sont appelées par des macros VBE (de ce
classeur ou d'autres classeurs)
s :s
Cordialement

Céline


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
Céline
bonjour, bonjour !

effectivement, j'aurais pu utiliser le codename de mes feuilles, mais
utiliser le nom "tagadatsointsoin" permettait à ma routine de s'assurer
qu'elle récupérait bien la feuille dont le format est celui du modèle. :s
en effet j'écris :
Do Until apdw.Sheets(1).Name = "tagadatsointsoin"
apdw.Close
MsgBox "ce classeur ne contient pas les données que je recherche"
texte = ""
test_extension (--> ouvre une boite de dialogue ou l'utilisateur
est censé aller chercher une copie du classeur excel modèle, contenant la
fameuse feuille [programme inclus à la fin du message])
If texte = "" Then
Exit Do
Else
Workbooks.Open (texte)
Set apdw = ActiveWorkbook
End If
Loop
PARCE QUE ! Imaginons qu'un utilisateur supprime l'onglet tagadatsointsoin,
enregistre et ferme le document. Un autre utilisateur réouvre le classeur,
crée une nouvelle feuille (pour ses besoins précis) et enregistre : la
nouvelle feuille crée prend alors le codename de mon onglet tagadatsointsoin
et se fait passer pour lui dans mon code VBE; auquel cas mon pgmme le
reconnait et plante 3 ligne plus tard parce que le champ recherché a disparu
! ! (efffectivement on pourrait même envisger l'option ou le nouvel
utilisateur renomme la nouvelle feuille tagdatsointsoin auquel cas mon pgmme
plante de toute façon, mais on part du principe que c'est pas possible qu'il
tombe pile sur le même nom)
Ceci est une vision assez simplifiée du problème qui consiste en gros à
tester et mettre à jour des données; effectivement je pourrais tester chaque
fois la présence ou non de la donnée recherchée, mais comme j'ai
régulièrement recours à cet onglet il me paraissait plus simple de trouver un
moyen de le laisser modifiable sans pour autant pouvoir ni le supprimer ni le
renommer ! :p
Mon serpent se mord la queue....

:s

Merci en tous cas pour tous vos conseils, ils me permettent de toute façon
d'apporter de bonnes évolutions à mon fichier même je n'arrive pas à résoudre
ce problème précis !
Bonne journée
Céline

P.S. : ma fonction test_extension : (pour mieux me faire comprendre)
Sub test_extension()

Do Until Right(texte, 4) = ".xls"
MsgBox "veuillez sélectionner un classeur Excel Organisation de la
fête", vbExclamation
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
dlg.Show
If dlg.SelectedItems.Count > 0 Then
texte = dlg.SelectedItems(1)
Else
texte = ""
Exit Do
End If
Loop

End Sub
1 2