Protection feuille Excel - Cas particuliers
Résolu
Charlotte.L-SBP
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Morgothal Messages postés 1236 Date d'inscription Statut Membre Dernière intervention -
Morgothal Messages postés 1236 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis stagiaire en Entreprise et je viens de créer une base de donnée Excel pour créer un centre de ressources documentaires en ligne.
Comme cette base de données sera en ligne, j'aurais voulu la protéger mais le probléme est que je ne veux pas tout protéger.
J'ai regardé sur des forums, mais il n'y a pas de réponses qui me correspondent vraiment.
Je m'explique. J'ai une premiére feuille d'accueil dans laquelle j'aurais juste voulu conserver l'acces aux liens pour les clients (Un lien contact et un autre vers un Guide)
Ensuite j'ai une deuxiéme feuille et c'est celle la qui me pose le plus de problémes. Dans cette feuille, j'ai un moteur de recherche par mots clés (qui en fait séléctionne des mots clés dans les titres). Ceci selectionne des colonnes (Description du document, Sujet du document...). Les clients peuvent également choisir de chercher un document en utilisant des filtres Par exemple, le client peut choisir de sélectionner les filtres ou alors de rentrer un mot clés mais la Table Excel est la meme. Les titres sont des Hyperlinks vers des PDFS.
Ainsi, j'aurais voulu protéger aussi cette deuxiéme feuille mais laisser aux clients la possibilité d'utiliser le moteur de recherche et les filtres et d'ouvrir les hyperlinks.
Merci par avance,
Charlotte
Je suis stagiaire en Entreprise et je viens de créer une base de donnée Excel pour créer un centre de ressources documentaires en ligne.
Comme cette base de données sera en ligne, j'aurais voulu la protéger mais le probléme est que je ne veux pas tout protéger.
J'ai regardé sur des forums, mais il n'y a pas de réponses qui me correspondent vraiment.
Je m'explique. J'ai une premiére feuille d'accueil dans laquelle j'aurais juste voulu conserver l'acces aux liens pour les clients (Un lien contact et un autre vers un Guide)
Ensuite j'ai une deuxiéme feuille et c'est celle la qui me pose le plus de problémes. Dans cette feuille, j'ai un moteur de recherche par mots clés (qui en fait séléctionne des mots clés dans les titres). Ceci selectionne des colonnes (Description du document, Sujet du document...). Les clients peuvent également choisir de chercher un document en utilisant des filtres Par exemple, le client peut choisir de sélectionner les filtres ou alors de rentrer un mot clés mais la Table Excel est la meme. Les titres sont des Hyperlinks vers des PDFS.
Ainsi, j'aurais voulu protéger aussi cette deuxiéme feuille mais laisser aux clients la possibilité d'utiliser le moteur de recherche et les filtres et d'ouvrir les hyperlinks.
Merci par avance,
Charlotte
A voir également:
- Protection feuille Excel - Cas particuliers
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Word et excel gratuit - Guide
- Verrouiller cellule excel sans verrouiller la feuille - Guide
- Cas ram - Guide
10 réponses
Bonjour,
Quand on protège une feuille, toutes les cellules sont verrouillées par défaut, pour laisser la possibilité de modifier certaines cellules, il faut donc déverrouiller ces cellules en les sélectionnant, clique droit>Format de cellule>Onglet Protection et décocher Verrouillée.
Ensuite, dans le menu Outils>Protection>Protéger la feuille, il a plein d'options, comme le choix de laisser l'utilisation des filtres, ou des hyperliens.
Je ne sais pas si c'est ce que tu cherches précisément, mais à ta place je fouillerai de ce côté.
Quand on protège une feuille, toutes les cellules sont verrouillées par défaut, pour laisser la possibilité de modifier certaines cellules, il faut donc déverrouiller ces cellules en les sélectionnant, clique droit>Format de cellule>Onglet Protection et décocher Verrouillée.
Ensuite, dans le menu Outils>Protection>Protéger la feuille, il a plein d'options, comme le choix de laisser l'utilisation des filtres, ou des hyperliens.
Je ne sais pas si c'est ce que tu cherches précisément, mais à ta place je fouillerai de ce côté.
Merci de cette si rapide réponse,
En effet c'est ce que je souhaite pour une partie. Mais mon probléme est que une fois cela réalisé, mon bouton Textbox que j'ai créér (contenant une macro) est impossible á utiliser et me demande de le débuger...
Et cela méme si je vais dans les propriétés du bouttons et que je le dévérouille....
En effet c'est ce que je souhaite pour une partie. Mais mon probléme est que une fois cela réalisé, mon bouton Textbox que j'ai créér (contenant une macro) est impossible á utiliser et me demande de le débuger...
Et cela méme si je vais dans les propriétés du bouttons et que je le dévérouille....
Alors peut-être dans la macro de ton bouton, au début déprotéger la feuille, et remettre la protection à la fin ?
Sub Pouetpouet () ActiveWorkbook.Unprotect 'Ta Macro ActiveWorkbook.Protect End Sub
Merci!! Je suis sure que cela dois marcher mais ne susi pas tres douée en Macros. Ma nouvelle Macro est celle ci, mais cela ne marche pas....
Sub Pouetpouet()
ActiveWorkbook.Unprotect
Private Sub BtnConvtxt_Click()
For Each c In Selection
If IsNumeric(c) Then c.Value = "'" & c.Value
Next c
End Sub
Private Sub BtnSuppFiltres_Click()
Tbx1.Text = ""
Selection.AutoFilter Field:=1
Tbx2.Text = ""
Selection.AutoFilter Field:=2
Tbx3.Text = ""
Selection.AutoFilter Field:=3
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Tbx1_Change()
Selection.AutoFilter Field:=1, Criteria1:="=*" & Tbx1.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx1.Text = ""
Selection.AutoFilter Field:=1
End Sub
Private Sub Tbx2_Change()
Selection.AutoFilter Field:=2, Criteria1:="=*" & Tbx2.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx2.Text = ""
Selection.AutoFilter Field:=2
End Sub
Private Sub Tbx3_Change()
Selection.AutoFilter Field:=3, Criteria1:="=*" & Tbx3.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx3.Text = ""
Selection.AutoFilter Field:=3
End Sub
Private Sub Tbx4_Change()
Selection.AutoFilter Field:=4, Criteria1:="=*" & Tbx4.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub
ActiveWorkbook.Protect
End Sub
Sub Pouetpouet()
ActiveWorkbook.Unprotect
Private Sub BtnConvtxt_Click()
For Each c In Selection
If IsNumeric(c) Then c.Value = "'" & c.Value
Next c
End Sub
Private Sub BtnSuppFiltres_Click()
Tbx1.Text = ""
Selection.AutoFilter Field:=1
Tbx2.Text = ""
Selection.AutoFilter Field:=2
Tbx3.Text = ""
Selection.AutoFilter Field:=3
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Tbx1_Change()
Selection.AutoFilter Field:=1, Criteria1:="=*" & Tbx1.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx1.Text = ""
Selection.AutoFilter Field:=1
End Sub
Private Sub Tbx2_Change()
Selection.AutoFilter Field:=2, Criteria1:="=*" & Tbx2.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx2.Text = ""
Selection.AutoFilter Field:=2
End Sub
Private Sub Tbx3_Change()
Selection.AutoFilter Field:=3, Criteria1:="=*" & Tbx3.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx3.Text = ""
Selection.AutoFilter Field:=3
End Sub
Private Sub Tbx4_Change()
Selection.AutoFilter Field:=4, Criteria1:="=*" & Tbx4.Text & "*", Operator:=xlAnd
End Sub
Private Sub Tbx4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Tbx4.Text = ""
Selection.AutoFilter Field:=4
End Sub
ActiveWorkbook.Protect
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Peut etre qu'il faut remettre cette formule á plusieurs endroits ?
J'essaye différentes solutions mais me demande toujours de Débuguer...
J'essaye différentes solutions mais me demande toujours de Débuguer...
Salut,
En fait, la sub pouetpouet de Morghotal était juste un exemple.
Tu dois, pour chaque macro qui utilise des feuilles protégées utiliser :
ActiveWorkbook.Unprotect 'en début de code après Sub ... ou Private Sub...
ActiveWorkbook.Protect 'en fin de code avant End Sub
comme te le montrais Morgothal (que je crois bien souvent aujourd'hui ;-) dans son exemple.
Pour ton cas, par exemple :
etc...
En fait, la sub pouetpouet de Morghotal était juste un exemple.
Tu dois, pour chaque macro qui utilise des feuilles protégées utiliser :
ActiveWorkbook.Unprotect 'en début de code après Sub ... ou Private Sub...
ActiveWorkbook.Protect 'en fin de code avant End Sub
comme te le montrais Morgothal (que je crois bien souvent aujourd'hui ;-) dans son exemple.
Pour ton cas, par exemple :
Private Sub BtnConvtxt_Click() ActiveWorkbook.Unprotect For Each c In Selection If IsNumeric(c) Then c.Value = "'" & c.Value Next c ActiveWorkbook.Protect End Sub
Private Sub BtnSuppFiltres_Click() ActiveWorkbook.Unprotect Tbx1.Text = "" Selection.AutoFilter Field:=1 Tbx2.Text = "" Selection.AutoFilter Field:=2 Tbx3.Text = "" Selection.AutoFilter Field:=3 Tbx4.Text = "" Selection.AutoFilter Field:=4 ActiveWorkbook.Protect End Sub
etc...
Mais il me demande encore de Débuguer en appliquant ceci pour chaque macros....
Et en essayant juste de déprotéger la feuille sans passer par ta macro?
En reprenant mon exemple plus haut,
Juste ces 3 lignes,
Si ça ne passe pas, il faudrait essayer de déprotéger une seule des deux feuilles, celle concernée par la macro, en faisant :
En reprenant mon exemple plus haut,
Sub Pouetpouet () ActiveWorkbook.Unprotect End Sub
Juste ces 3 lignes,
Si ça ne passe pas, il faudrait essayer de déprotéger une seule des deux feuilles, celle concernée par la macro, en faisant :
'au début de la macro : Sheets("TaFeuille").Select ActiveSheet.Unprotect 'à la fin : ActiveSheet.Protect
Ah je crois avoir trouvé la solution :
Il faut en fait activer les filtres automatiques à l'ouverture de ton classeur, donc dans une Private Sub Workbook_Open (du code qui s'éxecutera à l'ouverture du classeur).
Il faudrait donc placer tout ton code (sans les ActiveWorkbook.Protect/Unprotect) dans un module (clique droit dans la liste de feuilles en haut a gauche de l'éditeur VBA, Insertion>Module), et dans la feuille Workbook, choisir à la place de "(Général)" --> Workbook
Il devrait écrire tout seul :
et tu écrirais dans cette sub :
Tu actives donc les filtres automatiques et tu protèges ton classeur.
J'attend ton retour pour savoir si cela fonctionne :)
Il faut en fait activer les filtres automatiques à l'ouverture de ton classeur, donc dans une Private Sub Workbook_Open (du code qui s'éxecutera à l'ouverture du classeur).
Il faudrait donc placer tout ton code (sans les ActiveWorkbook.Protect/Unprotect) dans un module (clique droit dans la liste de feuilles en haut a gauche de l'éditeur VBA, Insertion>Module), et dans la feuille Workbook, choisir à la place de "(Général)" --> Workbook
Il devrait écrire tout seul :
Private Sub Workbook_Open() End Sub
et tu écrirais dans cette sub :
ActiveSheet.EnableAutoFilter = True ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
Tu actives donc les filtres automatiques et tu protèges ton classeur.
J'attend ton retour pour savoir si cela fonctionne :)
A Non en fait cela ne marche plus, avec la premiere solution je peux écrire dans la boite de texte et cela me séelctionne bien mes colonnes mais apres je n¦ai plus l¦acces aux filtres.
Je ne comprends pas bien la deuxieme solution.. Ou trouve t-on la Private Sub Workbook-Open. Il n'y a rien aui s'ouvre pour moi quand j'ouvre mon classeur. J'ai ouvert un module mis la formule sans les codes mais je n'ai pas le choix Workbook, uniquement General en haut á gauche.... Désolé ce sont mes premieres confrontations avec les macros...
Je ne comprends pas bien la deuxieme solution.. Ou trouve t-on la Private Sub Workbook-Open. Il n'y a rien aui s'ouvre pour moi quand j'ouvre mon classeur. J'ai ouvert un module mis la formule sans les codes mais je n'ai pas le choix Workbook, uniquement General en haut á gauche.... Désolé ce sont mes premieres confrontations avec les macros...
Essaye d'écrire ceci dans ta page Workbook et le reste de ta macro sur le module créé précedemment :
Ferme et re-ouvre ton classeur pour bien que le procédure évenementielle soit reconnue.
Private Sub Workbook_Open() ActiveSheet.EnableAutoFilter = True ActiveSheet.Protect contents:=True, userInterfaceOnly:=True End Sub
Ferme et re-ouvre ton classeur pour bien que le procédure évenementielle soit reconnue.
Je crois bien avoir trouvé, après tout mes tests, cela fonctionne !
Pour information :
Le Workbook, c'est ton classeur Excel, et le code contenu dans la procédure évenementielle Workbook_Open s'exécutera à l'ouverture de ce classeur.
Lorsque tu protèges ton classeur, ta feuille, il faut bien cocher l'option "Utiliser le filtre automatique".
Et au début de tes macros, tu met bien
Pour que la macro puisse s'exécuter, et à la fin de la macro tu insères :
J'espère que cette solution est la bonne :)
Pour information :
Le Workbook, c'est ton classeur Excel, et le code contenu dans la procédure évenementielle Workbook_Open s'exécutera à l'ouverture de ce classeur.
Lorsque tu protèges ton classeur, ta feuille, il faut bien cocher l'option "Utiliser le filtre automatique".
Et au début de tes macros, tu met bien
ActiveSheet.Unprotect
Pour que la macro puisse s'exécuter, et à la fin de la macro tu insères :
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=Truece qui protège ta feuille en autorisant le filtre automatique pour les utilisateurs
J'espère que cette solution est la bonne :)
Apres de nombreux essais. C'est bon tout fonctionne a merveille!!!!!!!!
J'ai compris ce qu'il fallait faire. J'ai mis la macro initiale sans les codes dans ma feuille initiale "Publications". J'ai mis ma macro avec les ActiveSheet.Protect dans un Module et dans le Workbook la formule
Private Sub Workbook_Open()
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
End Sub
Maintenant tout fonctionne. On peut cosnulter ma base de données mais seulement utiliser les filtres liens et recherche de mots.
Ouf !!" Heureusement que les efforts payent!!!
J'ai résolue la question sur le forum.
Merci vraiment d'avoir pris tout ce temps pour me répondre!!!!!!!!
J'ai compris ce qu'il fallait faire. J'ai mis la macro initiale sans les codes dans ma feuille initiale "Publications". J'ai mis ma macro avec les ActiveSheet.Protect dans un Module et dans le Workbook la formule
Private Sub Workbook_Open()
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
End Sub
Maintenant tout fonctionne. On peut cosnulter ma base de données mais seulement utiliser les filtres liens et recherche de mots.
Ouf !!" Heureusement que les efforts payent!!!
J'ai résolue la question sur le forum.
Merci vraiment d'avoir pris tout ce temps pour me répondre!!!!!!!!