patouman
XLDnaute Occasionnel
Bonjour à tous,
je rame, non je coule presque car n'arrivant pas à résoudre ce casse tête. J'espère qu'un membre pourra m'apporter la lumière
j'ai créé un fichier destiné à être partagé en réseau avec 9 utilisateurs. Chacun d'entre eux ne devant pas voir les informations des autres, j'ai créé une macro permettant un accès uniquement à son onglet par saisie de l'identifiant personnel et un mot de passe(inscrits sur une feuille "DroitsUsers"). A noter qu'à l'ouverture du fichier seule une feuille vierge apparait avant saisie de l'identifiant et MDP. Quant à moi, je dispose des droits administrateur.
Mon problème est que je voudrais y ajouter des fonctions qui plantent le fonctionnement de ce fichier.
1-je souhaiterais que le fichier s'enregistre à la fermeture en écrasant l'ancien, sans message du type "il existe un fichier nommé...."
2- que soit enregistré une copie supplémentaire à l'emplacement suivant avec un bout de macro de type :
ChDir "U:\DZAG\Y1Y2\Y2-Bureau\PREVENTION DOSSIERS\BILAN ACTIVITES"
ActiveWorkbook.SaveAs Filename:=_
"U:\DZAG\Y1Y2\Y2-Bureau\PREVENTION DOSSIERS\BILAN ACTIVITES\Bilan d activites Assistants de prevention - Copie.xlsm"_
, FileFormat:=x1OpenXMLWorkbookMacroEnabled, CreateBackup:=False
en y ajoutant la date (dd-mm-yy) et le nom d'utilisateur
voici ma macro actuelle :
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).Ro w
'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
ElseIf Worksheets("DroitsUsers").Cells(x, 1) = "Admin" And Worksheets("DroitsUsers").Cells(x, 2) = "MdpAdmin" Then
For i = 1 To ThisWorkbook.Sheets.Count
If Sheets(i).Name <> "Vierge" Then Sheets(i).Visible = True
Next
Application.ScreenUpdating = True
Exit Sub
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
MERCI par avance aux courageux qui voudront et qui pourront m'aider
je rame, non je coule presque car n'arrivant pas à résoudre ce casse tête. J'espère qu'un membre pourra m'apporter la lumière
j'ai créé un fichier destiné à être partagé en réseau avec 9 utilisateurs. Chacun d'entre eux ne devant pas voir les informations des autres, j'ai créé une macro permettant un accès uniquement à son onglet par saisie de l'identifiant personnel et un mot de passe(inscrits sur une feuille "DroitsUsers"). A noter qu'à l'ouverture du fichier seule une feuille vierge apparait avant saisie de l'identifiant et MDP. Quant à moi, je dispose des droits administrateur.
Mon problème est que je voudrais y ajouter des fonctions qui plantent le fonctionnement de ce fichier.
1-je souhaiterais que le fichier s'enregistre à la fermeture en écrasant l'ancien, sans message du type "il existe un fichier nommé...."
2- que soit enregistré une copie supplémentaire à l'emplacement suivant avec un bout de macro de type :
ChDir "U:\DZAG\Y1Y2\Y2-Bureau\PREVENTION DOSSIERS\BILAN ACTIVITES"
ActiveWorkbook.SaveAs Filename:=_
"U:\DZAG\Y1Y2\Y2-Bureau\PREVENTION DOSSIERS\BILAN ACTIVITES\Bilan d activites Assistants de prevention - Copie.xlsm"_
, FileFormat:=x1OpenXMLWorkbookMacroEnabled, CreateBackup:=False
en y ajoutant la date (dd-mm-yy) et le nom d'utilisateur
voici ma macro actuelle :
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).Ro w
'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
ElseIf Worksheets("DroitsUsers").Cells(x, 1) = "Admin" And Worksheets("DroitsUsers").Cells(x, 2) = "MdpAdmin" Then
For i = 1 To ThisWorkbook.Sheets.Count
If Sheets(i).Name <> "Vierge" Then Sheets(i).Visible = True
Next
Application.ScreenUpdating = True
Exit Sub
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
MERCI par avance aux courageux qui voudront et qui pourront m'aider