Bonjour à tous,
Voici mon code :
Mon objectif est d'ouvrir l'Excel uniquement en lecture pour tout public et en écriture pour Toto et Titi. Malheureusement je n'y arrive pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'on affiche la feuille Vierge Sheets("Vierge").Visible = True 'on planque toutes les autres feuilles sauf Vierge For x = 1 To ThisWorkbook.Sheets.Count If Sheets(x).Name <> "Vierge" Then Sheets(x).Visible = xlSheetVeryHidden Next End Sub Private Sub Workbook_Open() On Error Resume Next Application.ScreenUpdating = False 'on defini un pointeur Pointeur = 0 'on affiche la feuille Vierge Sheets("Vierge").Visible = True 'on va dessus Sheets("Vierge").Activate 'on planque toutes les autres For x = 1 To ThisWorkbook.Sheets.Count If Sheets(x).Name <> "Vierge" Then Sheets(x).Visible = xlSheetVeryHidden Next 'on saisit le user User = InputBox("Veuillez saisir votre nom d'utilisateur", "Utilisateur") 'on saisit le mot de passe MDP = InputBox("Veuillez saisir votre mot de passe", "Mot de passe") 'Derniere ligne du tableau de la feuille DroitsUsers pour boucler dessus DerLigne = Sheets("DroitsUsers").Range("A65536").End(xlUp).Row 'on boucle pour trouver les occurences, x=2 car je pars du principe que la premiere ligne _ contient les entetes de colonne For x = 2 To DerLigne 'si ce qu'il y a dans la colonne1 (Colonne A : user) = le user saisi _ ET ce qu'il y a dans la colonne2 (Colonne B : mot de passe) If Worksheets("DroitsUsers").Cells(x, 1) = User And Worksheets("DroitsUsers").Cells(x, 2) = MDP Then 'on affiche la feuille définié en colonne3 (Colonne C : Onglet autorisé) 'on affiche la feuille correspondante FeuilleVisible = Worksheets("DroitsUsers").Cells(x, 3) Sheets(FeuilleVisible).Visible = True 'on va dessus Sheets(FeuilleVisible).Activate 'on se met un pointeur pour voir si on trouve quelque chose, si on trouve rien on quittera Pointeur = Pointeur + 1 End If Next x 'Si le pointeur est 0 on ferme le fichier. If Pointeur = 0 Then MsgBox "Utilisateur ou mot de passe non valide" & vbCrLf & vbCrLf & "Le fichier va se fermer", vbCritical + vbOKOnly, "Sécurité" ActiveWorkbook.Close SaveChanges:=False End If 'on planque la feuille Vierge Sheets("Vierge").Visible = 2 Application.ScreenUpdating = True End Sub
Mon code me permet uniquement de donner accès à un onglet ou à un autre toujours en écriture. C'est ce que j'ai choisi de faire en attendant !
Pouvez-vous me propose une solution pour Lecture et Ecriture ?
Merci beaucoup d'avance,
Thibaut.
Partager