Procédure de sauvegarde administrateur vs utilisateur

Bonjour à tous,

J'aurais besoin de votre aide afin de modifier un code (merci Banzai64 !). Ce code fonctionne très bien et permet aux utilisateurs de ne pas modifier le fichier original...

Parfait donc, mais ne facilite pas les mises à jour du programme pour "l'administrateur". J'ai essayé d'ajouter une msgbox lors du clic sur "enregistrer" afin de demander à l'utilisateur s'il était administrateur, en le confirmant par mot de passe:

* si oui, le saveas redevient classique, la personne peut entrer le nom de fichier qu'elle souhaite !

* si non, ouverture de la boite de dialogue avec le nom par défaut déjà inscrit dans le champ. Si ce nom est modifié, le fichier n'est pas sauvegardé

* si annuler : on sort de la procédure de savegarde

Voici le code gentiment écrit par Banzai64:

Dim EnCours As Boolean

Private Sub Workbook_BeforeSave(ByVal SaveUI As Boolean, Cancel As Boolean)
Dim Nom As String

  If EnCours = True Then Exit Sub
  EnCours = True
  Nom = Year(Date) & "." & Month(Date) & "." & Day(Date) & " - " & Range("C2") & ".xls"
  Application.DisplayAlerts = False
  ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Nom
  Application.DisplayAlerts = True
  Cancel = True
  EnCours = False
End Sub

Avez-vous des idées ??

Merci beaucoup,

Amicalement

Bonsoir à tous,

J'ai essayé d'avancer en cherchant sur le net... ce n'est pas brillant.... Voici le code (pas finalisé, mais qui plante déjà...):

Private Sub Workbook_BeforeSave(ByVal SaveUI As Boolean, Cancel As Boolean)
Dim YesNo As Variant

YesNo = MsgBox("Administrateur?", vbYesNoCancel)
        Select Case YesNo
        Case vbYes
            Call Closer1
      '  Case vbNo
     '       Call Closer2
        Case vbCancel
            Cancel = True
        End Select
Exit Sub
End Sub
 Sub Closer1()
     Dim Nom As String
   Nom = Application.Dialogs(xlDialogSaveAs).Show
    ActiveWorkbook.SaveAs Filename:=(Nom)
End Sub

Le 1er truc qui me stresse, c'est la message apparait 2 fois... Les cancels ne sont efficaces et sauveagarde malgré tout le fichier....

Là, je ne sais plus quoi faire...

Si qqn a une idée lumineuse...

Bonne soirée,

Amicalement

Bonjour

A tester (pas trop testé)

Bonsoir Banzai64 !

Tu as toute ma reconnaissance éternelle !

Par contre je ne comprends pas pourquoi l'idée de la msgbox ne fonctionnait pas...

Merci Dr Banzai64 de t'être encore une fois porté à mon secours...

À plus tard

Amicalement

Re-,

Grâce au code de Banzai64, j'ai essayé de comprendre d'où venaient mes erreurs...

Voici le code auquel j’aboutis :

Dim EnCours As Boolean

Private Sub Workbook_BeforeSave(ByVal SaveUI As Boolean, Cancel As Boolean)
Dim fich As Variant, fich2 As Variant
Dim Nom As Variant
Dim file_name As Variant
Dim LValue As String

If EnCours = True Then Exit Sub
EnCours = True
reponse = MsgBox("Administrateur ?", vbYesNo)
 ' If reponse = vbCancel Then End Sub
        Select Case reponse
        Case vbYes
            Call Closer1
       Case vbNo
            Call Closer2
        Case vbCancel
            Cancel = True
        End Select
End Sub
 Sub Closer1()
  EnCours = True
If InputBox("Mot de passe administrateur", "Sauvegarde") = "abc" Then
Application.DisplayAlerts = False
Application.Dialogs(xlDialogSaveAs).Show
Application.DisplayAlerts = True
  Cancel = True
EnCours = False
End If
End Sub
 Sub Closer2()
 Dim Cancel As Boolean

Nom = Year(Date) & "." & Month(Date) & "." & Day(Date) & " - " & Range("C2") & ".xls"
file_name = Application.GetSaveAsFilename(Nom, _
FileFilter:="Excel Files,*.xls,All Files,*.*", _
Title:="Save As File Name")
If file_name = False Then Exit Sub
If file_name = True Then ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Nom

  Application.DisplayAlerts = True
  Cancel = True
EnCours = False
  End Sub

En utilisant le débogage pas à pas détaillé, je vois que dans la sub closer1(), lors de l'ouverture de l'Application.Dialogs(xlDialogSaveAs).Show, le code me renvoie vers Private Sub Workbook_BeforeSave...

Le but de cette sub closer1() est de laisser le choix du nom du fichier à l'utilisateur, ce qui rend l'utilisation de Application.GetSaveAsFilename plus difficile...

Quelqu'un a-t-il une idée ???

Merci beaucoup,

Bonne journée,

Bonjour

Je ne comprends pas ce que tu veux faire

La macro est sensée faire

Si on choisit "Enregistrer"

  1. Administrateur OUI ----> Sauvegarde du fichier sous son nom actuel
  2. Administrateur NON ---> Sauvegarde sous un nom défini

Si on choisit "Enregistrer sous"

  • Administrateur OUI ----> Boîte de dialogue enregistrer sous
  • Administrateur NON ---> Sauvegarde sous un nom défini

Ce n'est pas ce que tu voulais ?

Bonjour Banzai64,

si, si : ton code est PARFAIT !

Le seul point qui peut gêner est que l'utilisation non administrateur ne peut pas annuler la procédure une fois engagée, non ?

Je me disais juste qu'une msgbox pour demander en amont si l'utilisateur aurait pu être sympa... mais là, je te l'accorde : je pinaille !

Bonjour

A tester

C'est parfait !! Merci beaucoup Banzai64 !!

Bonne journée,

À bientôt !

Rechercher des sujets similaires à "procedure sauvegarde administrateur utilisateur"