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

transformer un classeur en lecture seule

7 réponses
Avatar
Xavier
Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le début
il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou en
lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance

7 réponses

Avatar
PolareBear
Bonjour,
Pour la lecture seule à attribuer après ouverture... je vois pas trop.
Mais on peut 'simuler' le fonctionnement, solution qui a l'avantage
d'éliminer 'enregistrer sous' aussi :

J'ai imaginé que tu mettais ton niveau d'accès utilisateur dans une
variable nommée user_level (n'oublie pas de la déclarer correctement...)
et que user_level=2 correspondait à une utilisation 'lecture seule

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If user_level = 2 Then Saved = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If user_level = 2 Then Cancel
End Sub

Ca te convient ?

Bon dimanche.

Rai

Xavier a écrit :
Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le début
il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou en
lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance


Avatar
Daniel.C
Bonjour.
Pour donner un accès en lecture seule après ouverture du classeur :
ThisWorkbook.ChangeFileAccess xlReadOnly
Cordialement.
Daniel

Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le début il
demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou en
lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès total, de
lui imposer un accès en lecture seule ?

merci d'avance


Avatar
Xavier
Merci Daniel, c'est génial
il y a toutefois un petit truc que j'aimerais améliorer mais je sais pas
si c'est possible.
Lorsque le code fait ThisWorkbook.ChangeFileAccess xlReadOnly le
programme me demande si je veux enregistrer le programme.

Moi je veux pas enregistrer et je veux pas de message. Pour enlever le
message je fais un coup de :
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Application.DisplayAlerts = True

Là c'est mieux , j'ai plus de message mais il m'enregistre mon programme.

Ne peut-on empécher l'enregistrement ?

Merci
Xavier


Daniel.C a écrit :
Bonjour.
Pour donner un accès en lecture seule après ouverture du classeur :
ThisWorkbook.ChangeFileAccess xlReadOnly
Cordialement.
Daniel

Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le
début il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou
en lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance






Avatar
Xavier
Merci pour ton idée. La solution de Daniel me convient mieux car je ne
souhaite pas verrouiller le "enregistrer sous".

Merci quand même car c'est une super idée que je garde pour un autre
programe.

Xavier


PolareBear a écrit :
Bonjour,
Pour la lecture seule à attribuer après ouverture... je vois pas trop.
Mais on peut 'simuler' le fonctionnement, solution qui a l'avantage
d'éliminer 'enregistrer sous' aussi :

J'ai imaginé que tu mettais ton niveau d'accès utilisateur dans une
variable nommée user_level (n'oublie pas de la déclarer correctement...)
et que user_level=2 correspondait à une utilisation 'lecture seule

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If user_level = 2 Then Saved = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If user_level = 2 Then Cancel
End Sub

Ca te convient ?

Bon dimanche.

Rai

Xavier a écrit :
Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le
début il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou
en lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance




Avatar
Daniel.C
Essaie :
ThisWorkbook.Saved = True
ThisWorkbook.ChangeFileAccess xlReadOnly
Daniel

Merci Daniel, c'est génial
il y a toutefois un petit truc que j'aimerais améliorer mais je sais pas si
c'est possible.
Lorsque le code fait ThisWorkbook.ChangeFileAccess xlReadOnly le programme me
demande si je veux enregistrer le programme.

Moi je veux pas enregistrer et je veux pas de message. Pour enlever le
message je fais un coup de :
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Application.DisplayAlerts = True

Là c'est mieux , j'ai plus de message mais il m'enregistre mon programme.

Ne peut-on empécher l'enregistrement ?

Merci
Xavier


Daniel.C a écrit :
Bonjour.
Pour donner un accès en lecture seule après ouverture du classeur :
ThisWorkbook.ChangeFileAccess xlReadOnly
Cordialement.
Daniel

Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le début
il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou en
lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès total,
de lui imposer un accès en lecture seule ?

merci d'avance








Avatar
PolareBear
si tu ne veux pas verrouiller le "enregistrer sous",
tu peux le faire ainsi :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If user_level = 2 and not SaveAsUI Then Cancel = True
End Sub


Xavier a écrit :
Merci pour ton idée. La solution de Daniel me convient mieux car je ne
souhaite pas verrouiller le "enregistrer sous".

Merci quand même car c'est une super idée que je garde pour un autre
programe.

Xavier


PolareBear a écrit :
Bonjour,
Pour la lecture seule à attribuer après ouverture... je vois pas trop.
Mais on peut 'simuler' le fonctionnement, solution qui a l'avantage
d'éliminer 'enregistrer sous' aussi :

J'ai imaginé que tu mettais ton niveau d'accès utilisateur dans une
variable nommée user_level (n'oublie pas de la déclarer correctement...)
et que user_level=2 correspondait à une utilisation 'lecture seule

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If user_level = 2 Then Saved = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If user_level = 2 Then Cancel
End Sub

Ca te convient ?

Bon dimanche.

Rai

Xavier a écrit :
Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le
début il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total ou
en lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance






Avatar
Xavier
super genial. Ca marche. Merci mille fois

Xavier

Daniel.C a écrit :
Essaie :
ThisWorkbook.Saved = True
ThisWorkbook.ChangeFileAccess xlReadOnly
Daniel

Merci Daniel, c'est génial
il y a toutefois un petit truc que j'aimerais améliorer mais je sais
pas si c'est possible.
Lorsque le code fait ThisWorkbook.ChangeFileAccess xlReadOnly le
programme me demande si je veux enregistrer le programme.

Moi je veux pas enregistrer et je veux pas de message. Pour enlever le
message je fais un coup de :
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Application.DisplayAlerts = True

Là c'est mieux , j'ai plus de message mais il m'enregistre mon programme.

Ne peut-on empécher l'enregistrement ?

Merci
Xavier


Daniel.C a écrit :
Bonjour.
Pour donner un accès en lecture seule après ouverture du classeur :
ThisWorkbook.ChangeFileAccess xlReadOnly
Cordialement.
Daniel

Bonjour à tous et bon dimanche,
j'ai un programme dans lequel j'ai mis un code VBA afin que dès le
début il demande le nom et le mot de passe de la personne.
Je souhaiterais ensuite suivant la personne, donner un accès total
ou en lecture seule.
Ma question : Est il possible une fois le classeur ouvert en accès
total, de lui imposer un accès en lecture seule ?

merci d'avance