Protection classeur par VBA

Le
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4584561
Bonjour,


Solution1:

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 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"
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


JB
Le #4584541
Protection de colonnes:

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
Bonjour,

Solution1:

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...

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"


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 -



Ar
Le #4914101
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




Publicité
Poster une réponse
Anonyme