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

Protection classeur par VBA

3 réponses
Avatar
Pascal
je cherche un bout de code VBA pour differencier les droits d'acces sur un
classeur pour 2 utilisateurs.

J'ai un collaborateur qui effectue des relèves et saisit les données dans
des feuilles (1 par mois). Je souhaiterais lui autoriser uniquement la
saisie sur ces feuilles, dans des colonnes bien précises et lui empecher les
modifications de la structure du classeur.

L'ideal serait une boite de dialogue s'ouvrant à l'ouverture du classeur
demandant un mot de passe. Suivant le mot de passe saisi, l'utilisateur se
voit authorisé la saisie sur des colonnes determinées ou je me vois
authorisé le controle total.

Ceci dans le but de conserver pour moi le droit de modifier et faire evoluer
le fichier et eviter à mon collaborateur de faire des dommages à la
structure du fichier dont j'ai mis beaucoup de temps à mettre en place les
formules.

Merci

3 réponses

Avatar
JB
Bonjour,


Solution1:

http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti FeuillesMP.xls

Visualise la(les) feuille(s) de l'utilisateur en fonction du mot de
passe:

Dans la feuille Admin:
Mot passe Feuille
Jacques Boisgontier
Jacques Boisgontier2
Jean Dupont
Invité TouLeMonde

Dans le UserForm:

Private Sub B_ok_Click()
If Me.motpasse <> "" Then
For i = 1 To Range("MotPasse").Count
If UCase(Me.motpasse) = UCase(Range("motpasse")(i)) Then
temp = Range("feuille")(i)
Sheets(temp).Visible = True
End If
Next i
End If
Unload Me
End Sub

Dans un Module:

Sub auto_open()
UserForm1.Show
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
End Sub


Solution2: Pas de mot de passe . Le nom réseau authentifie la personne

http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletMulti Feuilles.xls


Visualise les feuilles de l'utilisateur(nom réseau)

Un onglet Admin contient

User Feuille
Boisgontier Boisgontier
Boisgontier Boisgontier2
Dupont Dupont


Private Sub Workbook_Open()
For i = 1 To Range("user").Count
If UCase(Environ("username")) = UCase(Range("user")(i)) Then
temp = Range("feuille")(i)
Sheets(temp).Visible = True
End If
Next i
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
End Sub


JB
http://boisgontierjacques.free.fr/

On 18 juin, 09:46, "Pascal" wrote:
je cherche un bout de code VBA pour differencier les droits d'acces sur un
classeur pour 2 utilisateurs.

J'ai un collaborateur qui effectue des relèves et saisit les données dans
des feuilles (1 par mois). Je souhaiterais lui autoriser uniquement la
saisie sur ces feuilles, dans des colonnes bien précises et lui empeche r les
modifications de la structure du classeur.

L'ideal serait une boite de dialogue s'ouvrant à l'ouverture du classeur
demandant un mot de passe. Suivant le mot de passe saisi, l'utilisateur se
voit authorisé la saisie sur des colonnes determinées ou je me vois
authorisé le controle total.

Ceci dans le but de conserver pour moi le droit de modifier et faire evol uer
le fichier et eviter à mon collaborateur de faire des dommages à la
structure du fichier dont j'ai mis beaucoup de temps à mettre en place les
formules.

Merci


Avatar
JB
Protection de colonnes:

http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletColon" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngletColon nes.xls

Visualise les colonnes de l'utilisateur réseau:

les colonnes sont nommées avec le nom de l'utilisateur réseau
Private Sub Workbook_Open()
Sheets(1).Unprotect Password:=""
Columns(Range(Environ("username")).Address).EntireColumn.Hidden =
False
Sheets(1).Protect Password:=""
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sheets(1).Unprotect Password:=""
Columns("h:z").EntireColumn.Hidden = XlVeryHidden
Sheets(1).Protect Password:=""
End Sub

Créer des noms de champ avec Insertion/Nom/Définir:
boisgontier: H:J
stagiaire: K:M
xxxxxx: xxxx


JB
On 18 juin, 10:58, JB wrote:
Bonjour,

Solution1:

http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle...

Visualise la(les) feuille(s) de l'utilisateur en fonction du mot de
passe:

Dans la feuille Admin:
Mot passe Feuille
Jacques Boisgontier
Jacques Boisgontier2
Jean Dupont
Invité TouLeMonde

Dans le UserForm:

Private Sub B_ok_Click()
If Me.motpasse <> "" Then
For i = 1 To Range("MotPasse").Count
If UCase(Me.motpasse) = UCase(Range("motpasse")(i)) Then
temp = Range("feuille")(i)
Sheets(temp).Visible = True
End If
Next i
End If
Unload Me
End Sub

Dans un Module:

Sub auto_open()
UserForm1.Show
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
End Sub

Solution2: Pas de mot de passe . Le nom réseau authentifie la personne

http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/Protection/ProtectionOngle...

Visualise les feuilles de l'utilisateur(nom réseau)

Un onglet Admin contient

User Feuille
Boisgontier Boisgontier
Boisgontier Boisgontier2
Dupont Dupont

Private Sub Workbook_Open()
For i = 1 To Range("user").Count
If UCase(Environ("username")) = UCase(Range("user")(i)) Then
temp = Range("feuille")(i)
Sheets(temp).Visible = True
End If
Next i
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
End Sub

JBhttp://boisgontierjacques.free.fr/

On 18 juin, 09:46, "Pascal" wrote:



je cherche un bout de code VBA pour differencier les droits d'acces sur un
classeur pour 2 utilisateurs.

J'ai un collaborateur qui effectue des relèves et saisit les donnée s dans
des feuilles (1 par mois). Je souhaiterais lui autoriser uniquement la
saisie sur ces feuilles, dans des colonnes bien précises et lui empec her les
modifications de la structure du classeur.

L'ideal serait une boite de dialogue s'ouvrant à l'ouverture du class eur
demandant un mot de passe. Suivant le mot de passe saisi, l'utilisateur se
voit authorisé la saisie sur des colonnes determinées ou je me vois
authorisé le controle total.

Ceci dans le but de conserver pour moi le droit de modifier et faire ev oluer
le fichier et eviter à mon collaborateur de faire des dommages à la
structure du fichier dont j'ai mis beaucoup de temps à mettre en plac e les
formules.

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Ar
Il n'y a pas besoin de VBA pour faire ça.

Il suffit de définir les celules qui doivent être accessibles comme non
protégées (Format/Cellules), puis de protéger la feuille avec un mot de
passe.

je cherche un bout de code VBA pour differencier les droits d'acces sur un
classeur pour 2 utilisateurs.

J'ai un collaborateur qui effectue des relèves et saisit les données dans
des feuilles (1 par mois). Je souhaiterais lui autoriser uniquement la
saisie sur ces feuilles, dans des colonnes bien précises et lui empecher les
modifications de la structure du classeur.

L'ideal serait une boite de dialogue s'ouvrant à l'ouverture du classeur
demandant un mot de passe. Suivant le mot de passe saisi, l'utilisateur se
voit authorisé la saisie sur des colonnes determinées ou je me vois
authorisé le controle total.

Ceci dans le but de conserver pour moi le droit de modifier et faire evoluer
le fichier et eviter à mon collaborateur de faire des dommages à la
structure du fichier dont j'ai mis beaucoup de temps à mettre en place les
formules.

Merci