Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

protection des onglets d'un classeur

16 réponses
Avatar
ALF
Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF

10 réponses

1 2
Avatar
MichDenis
Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF
Avatar
ALF
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF





Avatar
ALF
bonsoir et merci,
peux tu me confirmer que ceci va aussi verouiller le code tout en
autorisant son execution ???

Merci


--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF





Avatar
ALF
Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF





Avatar
MichDenis
Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF





Avatar
ALF
Bonjour,

OK pour la protection du code,mais qu'en est il de l'autorisation de l
'execution de ce code pendant la phase de protection...
car en effet comme je le disais,j'aimerais que les utilisateurs de ce
fichier puisse executer ce code sans pouvoir le modifier...
faut il rajouter du code pour permettre l'execution de la macro tout en la
verouillant pour la modification...

Merci.
--
ALF



Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF










Avatar
MichDenis
Pour ce qui est de l'accessibilité au code du classeur :
Impossible de limiter l'accès sans avoir fermé le classeur et l'avoir ré-ouvert
après avoir renseigné l'onglet dans le message décrit dans le message précédent.

Pour ce qui est de la protection de la feuille et de la possibilité d'exécuter des
macros pendant que la feuille est protégé, je t'invite à lire l'aide

Tu places le curseur sur le mot "protect" dans une fenêtre vba et appel la touche F1

Tu dois mettre ceci dans le ThisWorkbook de ton classeur :
Toutes les feuilles seront protégées et tu pourra exécuter les macros que tu désires
sans que l'usager puisse modifier le contenu des cellules et des objets contenus dans les feuilles.
'--------------------------------
Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub
'--------------------------------


"ALF" a écrit dans le message de news:

Bonjour,

OK pour la protection du code,mais qu'en est il de l'autorisation de l
'execution de ce code pendant la phase de protection...
car en effet comme je le disais,j'aimerais que les utilisateurs de ce
fichier puisse executer ce code sans pouvoir le modifier...
faut il rajouter du code pour permettre l'execution de la macro tout en la
verouillant pour la modification...

Merci.
--
ALF



Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF










Avatar
ALF
Bonjour,

Non,apparemment cela ne fonctionne pas...

sh.Protect n'est pas reconnu..de même que drawingObject ,Contents et
UserInterfaceOnly.

les feuilles sont bien verouilles (on ne peut acceder aux cellules) ,les
codes sont inaccessibles...ok c'est bien ce que je voulais...
MAIS...
L'execution des macro est aussi verouillé ce que je ne veux pas...

ci joint le code que tu m'avais conseillé...

Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub

Peut etre faut il rajouter quelquechose sur le referentiel bibiotheque ???

Merci.
--
ALF



Pour ce qui est de l'accessibilité au code du classeur :
Impossible de limiter l'accès sans avoir fermé le classeur et l'avoir ré-ouvert
après avoir renseigné l'onglet dans le message décrit dans le message précédent.

Pour ce qui est de la protection de la feuille et de la possibilité d'exécuter des
macros pendant que la feuille est protégé, je t'invite à lire l'aide

Tu places le curseur sur le mot "protect" dans une fenêtre vba et appel la touche F1

Tu dois mettre ceci dans le ThisWorkbook de ton classeur :
Toutes les feuilles seront protégées et tu pourra exécuter les macros que tu désires
sans que l'usager puisse modifier le contenu des cellules et des objets contenus dans les feuilles.
'--------------------------------
Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub
'--------------------------------


"ALF" a écrit dans le message de news:

Bonjour,

OK pour la protection du code,mais qu'en est il de l'autorisation de l
'execution de ce code pendant la phase de protection...
car en effet comme je le disais,j'aimerais que les utilisateurs de ce
fichier puisse executer ce code sans pouvoir le modifier...
faut il rajouter du code pour permettre l'execution de la macro tout en la
verouillant pour la modification...

Merci.
--
ALF



Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF















Avatar
MichDenis
| L'execution des macro est aussi verouillé ce que je ne veux pas...

Peux-tu donner (publier ici un exemple de macro qui ne fonctionne pas
si tu appliques la procédure que je t'ai transmise ?




"ALF" a écrit dans le message de news:

Bonjour,

Non,apparemment cela ne fonctionne pas...

sh.Protect n'est pas reconnu..de même que drawingObject ,Contents et
UserInterfaceOnly.

les feuilles sont bien verouilles (on ne peut acceder aux cellules) ,les
codes sont inaccessibles...ok c'est bien ce que je voulais...
MAIS...
L'execution des macro est aussi verouillé ce que je ne veux pas...

ci joint le code que tu m'avais conseillé...

Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub

Peut etre faut il rajouter quelquechose sur le referentiel bibiotheque ???

Merci.
--
ALF



Pour ce qui est de l'accessibilité au code du classeur :
Impossible de limiter l'accès sans avoir fermé le classeur et l'avoir ré-ouvert
après avoir renseigné l'onglet dans le message décrit dans le message précédent.

Pour ce qui est de la protection de la feuille et de la possibilité d'exécuter des
macros pendant que la feuille est protégé, je t'invite à lire l'aide

Tu places le curseur sur le mot "protect" dans une fenêtre vba et appel la touche F1

Tu dois mettre ceci dans le ThisWorkbook de ton classeur :
Toutes les feuilles seront protégées et tu pourra exécuter les macros que tu désires
sans que l'usager puisse modifier le contenu des cellules et des objets contenus dans les
feuilles.
'--------------------------------
Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub
'--------------------------------


"ALF" a écrit dans le message de news:

Bonjour,

OK pour la protection du code,mais qu'en est il de l'autorisation de l
'execution de ce code pendant la phase de protection...
car en effet comme je le disais,j'aimerais que les utilisateurs de ce
fichier puisse executer ce code sans pouvoir le modifier...
faut il rajouter du code pour permettre l'execution de la macro tout en la
verouillant pour la modification...

Merci.
--
ALF



Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF















Avatar
ALF
bonsoir,

voici 2 exemples de macros qui ne s'executent pas automatiquement:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Range(Target).Select
End Sub

ou
Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range
If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges", "Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
For Each c In Range("I54:I73")
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) = "Qual" Or
Left(c, 1) = "%" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0"
End If
Next c
For Each c In Range("N24:N50")
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) = "Qual" Or
Left(c, 1) = "%" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00"
End If
Next c
For Each c In Range("B26:B44")
If Left(c, 4) = "Nomb" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.0"
End If
Next c
For Each c In Range("H5:H18")
If Left(c, 4) = "EFFC" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.0"
End If
Next c
Application.EnableEvents = True

End Sub


--
ALF



| L'execution des macro est aussi verouillé ce que je ne veux pas...

Peux-tu donner (publier ici un exemple de macro qui ne fonctionne pas
si tu appliques la procédure que je t'ai transmise ?




"ALF" a écrit dans le message de news:

Bonjour,

Non,apparemment cela ne fonctionne pas...

sh.Protect n'est pas reconnu..de même que drawingObject ,Contents et
UserInterfaceOnly.

les feuilles sont bien verouilles (on ne peut acceder aux cellules) ,les
codes sont inaccessibles...ok c'est bien ce que je voulais...
MAIS...
L'execution des macro est aussi verouillé ce que je ne veux pas...

ci joint le code que tu m'avais conseillé...

Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub

Peut etre faut il rajouter quelquechose sur le referentiel bibiotheque ???

Merci.
--
ALF



Pour ce qui est de l'accessibilité au code du classeur :
Impossible de limiter l'accès sans avoir fermé le classeur et l'avoir ré-ouvert
après avoir renseigné l'onglet dans le message décrit dans le message précédent.

Pour ce qui est de la protection de la feuille et de la possibilité d'exécuter des
macros pendant que la feuille est protégé, je t'invite à lire l'aide

Tu places le curseur sur le mot "protect" dans une fenêtre vba et appel la touche F1

Tu dois mettre ceci dans le ThisWorkbook de ton classeur :
Toutes les feuilles seront protégées et tu pourra exécuter les macros que tu désires
sans que l'usager puisse modifier le contenu des cellules et des objets contenus dans les
feuilles.
'--------------------------------
Private Sub Workbook_Open()
For Each sh In Worksheets
sh.Protect Password:="LOIC1999", _
DrawingObjects:=True, Contents:=True, _
UserInterfaceOnly:=True
Next
End Sub
'--------------------------------


"ALF" a écrit dans le message de news:

Bonjour,

OK pour la protection du code,mais qu'en est il de l'autorisation de l
'execution de ce code pendant la phase de protection...
car en effet comme je le disais,j'aimerais que les utilisateurs de ce
fichier puisse executer ce code sans pouvoir le modifier...
faut il rajouter du code pour permettre l'execution de la macro tout en la
verouillant pour la modification...

Merci.
--
ALF



Pour limiter l'accès au code, tu sélectionnes ton projet dans
l'explorateur de projets (fenêtre de l'éditeur de code) un clic droit,
propriétés de VBAproject , onglet Protection.

Tu dois fermer ensuite ton classeur et c'est seulement à sa réouverture
que le code sera inaccessible sans le mot passe que tu as choisis.




"ALF" a écrit dans le message de news:

Bonjour,

j'ai inséré UserInterfaceOnly:=True àla ligne de code comme indiqué mais
cela ne marche pas ..il n'y a apparemment aucun changement...c'est a dire que
lorque que j'active la macro Sub Proteger(), les cellules des onglets sont
bien protégés par contre je peux toujours visualiser et modifier le code..et
plus genant,je ne peux activer les macros intégrés dans les feuilles...

Merci de m'aider sur ce cas de figure..


Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999", UserInterfaceOnly:=True
Next i
End Sub
--
ALF



Ajoute ceci à cette ligne de code :

!UserInterfaceOnly:=True!

Worksheets(i).Protect Password:="LOIC1999",UserInterfaceOnly:=True



"ALF" a écrit dans le message de news:

Bonjour,

j'ai créé sur PERSO.xls, 2 macros qui permettent de proteger et de
deverouiller tous les onglets d'un classeur à partir d'une image.
cela marche parfaitement...
mais je me suis apercu que cela bloque aussi les macros insérés dans les
onglets...
ce qui me pose un probleme car le but etant d'empecher toutes modif sur les
cellules des onglets mais pas d'empecher les macros de fonctionner..
comment peut on verouiller les cellules des onglets tout en autorisant les
macros des onglets de fonctionner (par contre l'acces au macros doit etre
vérouillé...)
je vous laisse ci joints les 2 macros de protection/deprotection..

Sub Protéger()
'protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="LOIC1999"
Next i
End Sub

Sub Déprotéger()
'Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="LOIC1999"
Next i
End Sub

Merci de votre soutien
--
ALF




















1 2