Probleme de macro complementaire a integrer dans macro existante

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
 

denis

XLDnaute Nouveau
Re : Probleme de macro complementaire a integrer dans macro existante

Hello

Je comprends pas comment tu veux que le fichier soit enregistré s'il y a 9 utilisateurs dessus?
Ou bien tu parts du fait qu'il y a pas de conflits entre les users?
1) pour ne pas montrer des alertes de type "il y a deja un fichier machin" il faut mettre "Application.DisplayAlerts=False"
2) pour enregistrer une copie, hé bien écris deux fois la même ligne de code! donc:
Chdir(" ... ")
ThisWorkbook.saveAs "NomFichier"
ThisWorkbook.saveAs "NomFichier " & User & DatePart("d",Now) & "--" & DatePart("m",Now) & "--" & DatePart("y",Now)

DatePart est une fonction très utile, comme tu peux voir tu renseigne la lettre du format temps ("d" pour day, donc la date, "h" pour hour etc..)
 

denis

XLDnaute Nouveau
Re : Probleme de macro complementaire a integrer dans macro existante

Hello

Je comprends pas comment tu veux que le fichier soit enregistré s'il y a 9 utilisateurs dessus?
Ou bien tu parts du fait qu'il y a pas de conflits entre les users?
1) pour ne pas montrer des alertes de type "il y a deja un fichier machin" il faut mettre "Application.DisplayAlerts=False"
2) pour enregistrer une copie, hé bien écris deux fois la même ligne de code! donc:
Chdir(" ... ")
ThisWorkbook.saveAs "NomFichier"
ThisWorkbook.saveAs "NomFichier " & User & DatePart("d",Now) & "--" & DatePart("m",Now) & "--" & DatePart("y",Now)

DatePart est une fonction très utile, comme tu peux voir tu renseigne la lettre du format temps ("d" pour day, donc la date, "h" pour hour etc..)
 

patouman

XLDnaute Occasionnel
Re : Probleme de macro complementaire a integrer dans macro existante

Bonjour Denis et merci pour ta reponse,

oui en effet les users n'utiliseront pas le fichier en meme temps donc pas de conflit en général.

Merci beaucoup pour tes infos, je m'en vais les tester, je reviens ici pour te tenir au courant



ps :
identifiant : MOI
mot de passe : ZZZ
proteger/deproteger feuilles : popo
 

Pièces jointes

  • fichierdessais.xls
    125 KB · Affichages: 39
  • fichierdessais.xls
    125 KB · Affichages: 34
Dernière édition:

denis

XLDnaute Nouveau
Re : Probleme de macro complementaire a integrer dans macro existante

Voici un exemple qui fonctionne

N.B. Les Users, si mal intentionnés, et bien que n'ayant pas le droit de modifier les autres feuilles, ils pourront toujours modifier le code de la macro^^
 

Pièces jointes

  • fichierdessais.xls
    127 KB · Affichages: 30
  • fichierdessais.xls
    127 KB · Affichages: 29

Discussions similaires

Réponses
10
Affichages
628

Statistiques des forums

Discussions
311 722
Messages
2 081 930
Membres
101 843
dernier inscrit
Thaly