Partager un fichier avec feuille personnelles
C
Bonjour
J'ai créer un fichier avec différente feuille de calcules et j'aimerai que chaque personnes puisse accéder seulement à sa propre feuilles et pas aux restes, et que leurs actions se répercute une une feuille "administrateur" où tous les actes de chacun se répercutes .
Salut,
Les utilisateurs se connectent-ils sous le même compte ou un compte différent ?
Si comptes différents alors il faut testé le nom du compte
Private Sub Workbook_Open()
Dim strUser As String
Dim ws As Worksheet
strUser = Split(Environ(39), "=", , vbTextCompare)(1)
Select Case strUser
Case "Toto"
HideSheets Worksheets("Feuil1") ' // On cache les feuilles sauf Feuil1
Case "Titi"
HideSheets Worksheets("Feuil2") ' // On cache les feuilles sauf Feuil2
Case Else
MsgBox "Vous n'êtes pas reconnu comme utilisateur de ce classeur." & vbCrLf _
& "Connectez-vous avec un compte utilisateur qui puisse être reconnu.", vbOKOnly Or vbInformation, Application.Name
HideSheets Worksheets("NoUserDetected") ' // On cache les feuilles sauf NoUserDetected qui peut être une feuille avec rien dessus ou bien avec un message de connexion.
End Select
End Sub
Private Sub HideSheets(WorksheetName As Worksheet)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws
If .Name = WorksheetName.Name Then
ws.Visible = xlSheetVisible
Else
ws.Visible = xlSheetVeryHidden
End If
End With
Next ws
End SubSi même compte mais utilisateurs différent alors à l'ouverture tu demandes de renseigner le nom de l'utilisateur:
Private Sub Workbook_Open()
Dim strUser As String
Dim ws As Worksheet
strUser = Application.InputBox("Veuillez renseigner le nom d'utilisateur", "Renseignement compte")
Select Case strUser
Case "Toto"
HideSheets Worksheets("Feuil1") ' // On cache les feuilles sauf Feuil1
Case "Titi"
HideSheets Worksheets("Feuil2") ' // On cache les feuilles sauf Feuil2
Case Else
MsgBox "Vous n'êtes pas reconnu comme utilisateur de ce classeur." & vbCrLf _
& "Connectez-vous avec un compte utilisateur qui puisse être reconnu.", vbOKOnly Or vbInformation, Application.Name
HideSheets Worksheets("NoUserDetected") ' // On cache les feuilles sauf NoUserDetected qui peut être une feuille avec rien dessus ou bien avec un message de connexion.
End Select
End Sub
Private Sub HideSheets(WorksheetName As Worksheet)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws
If .Name = WorksheetName.Name Then
ws.Visible = xlSheetVisible
Else
ws.Visible = xlSheetVeryHidden
End If
End With
Next ws
End SubPour le reste c'est plus complexe, c'est faisable mais tu dois être familiarisé avec le VBA et l'environnement VBE