Adapter code pour restreindre l'ouverture d'un fichier

Bonsoir

Je souhaite de l'aide pour adapter le code ci-dessous à mon besoin.

En effet, je souhaite restreindre les utilisateurs en fonction de leur username.

Je souhaite aussi définir des dates d'expirations pour les utilisateurs autorisés.

Merci

Application.ScreenUpdating = False 'l'utilisateur ne voit pas les changement sur son écran

'la date d'expiration

DateExpiration = DateSerial(2019, 12, 31) ' <= choisissez la date d'expiration >>> via la fonction DateSerial avec les paramètres (aaaa, mm, jj)

'compare la date d'expiration avec la date d'aujourd'hui

'If DateExpiration <= Date Then

'If UserName <> "gogo" Or UserName <> "baba" Or UserName <> "shef" Or UserName <> "ordi" Or UserName <> "yamba" Or UserName <> "labo" Then

'autodestruction de fichier Excel (le fichier s'efface lui-même)

    Dim NomComplet As String

    NomComplet = Application.ActiveWorkbook.FullName

    ActiveWorkbook.Saved = True

    Application.ActiveWorkbook.ChangeFileAccess xlReadOnly

    Kill NomComplet

    Application.ActiveWorkbook.Close False

Else

End If

Application.ScreenUpdating = True 'on réenclanche l'affichage des changements

Bonjour,

Code à mettre dans le module du classeur (ThisWorkbook) du fichier que tu va distribuer. Il te faut adapter les noms des différents utilisateurs. A l'ouverture du classeur, un test est fait sur le nom d'utilisateur puis sur la date limite :

Private Sub Workbook_Open()

    Dim Utilisateur As String
    Dim DateExpiration As Date
    Dim Message As String

    Utilisateur = Environ("USERNAME")

    Message = Utilisateur & "," & _
              vbCrLf & _
              "Votre date limite d'utilisation de ce fichier est arrivée " & _
              "à expiration vous n'avez plus l'autorisation de l'utiliser !" & _
              vbCrLf & _
              vbCrLf & _
              "Contactez le propriétaire du fichier pour qu'il vous le comunique " & _
              "à nouveau car celui-ci va être détruit !"

    Select Case Utilisateur

        Case "Pierre"
            DateExpiration = DateSerial(2018, 5, 31)
            If DateExpiration <= Date Then Detruire Utilisateur, Message

        Case "Yves", "Thierry", "Lucien"
            DateExpiration = DateSerial(2019, 12, 31)
            If DateExpiration <= Date Then Detruire Utilisateur, Message

        Case "Alain"
            DateExpiration = DateSerial(2019, 7, 31)
            If DateExpiration <= Date Then Detruire Utilisateur, Message

        Case Else
            Message = "Attention !" & _
                      vbCrLf & _
                      "Vous n'avez pas le droit d'utiliser ce fichier." & _
                      vbCrLf & _
                      vbCrLf & _
                      "Si vous souhaitez utiliser ce fichier, contactez le propriétaire pour qu'il vous le comunique " & _
                      "de façon officielle car celui-ci va être détruit !"

            Detruire "", Message

    End Select

End Sub

'autodestruction de fichier Excel (le fichier s'efface lui-même)
Sub Detruire(Utilisateur As String, Message As String)

    Dim NomComplet As String

    MsgBox Message, vbCritical, "Expiration."

    Application.ScreenUpdating = False 'on réenclanche l'affichage des changements

    NomComplet = Application.ActiveWorkbook.FullName

    ThisWorkbook.Saved = True

    ThisWorkbook.ChangeFileAccess xlReadOnly

    Kill NomComplet

    ThisWorkbook.Close False

    Application.ScreenUpdating = True 'on réenclanche l'affichage des changements

End Sub

Bonjour These

Je m'excuse du temps mis pour vous revenir.

Merci pour votre solution.

Les tests ne sont pas concluants.

J'ai bien respecté le nom des utilisateurs mais quant ils ouvrent le fichier sur leur poste, le fichier se ferme même chez mois également.

Merci de revoir les cases svp

Bonjour,

ben ouvre-le en refusant les macros avec Shift 'Ouvrir'

eric

Bonjour,

Je viens de faire une série de tests et le fichier fonctionne très bien chez moi.

Exécutes le code en pas à pas et regardes que les noms d'utilisateurs correspondent en tout point (à la lettre et à l'accent près) avec les noms entrés en dur, attention si tu n'as pas mis "Option Compare Text" en tête de module, la casse est importante, "pierre" est différent de "Pierre". Quand tu fais les tests, met en commentaire les lignes de code de la sub "Detruire()" en ne laissant que la ligne [MsgBox Message, vbCritical, "Expiration."] active et tu peux faire un test de correspondance après avoir récupéré le nom de l'utilisateur :

Utilisateur = Environ("USERNAME")
MsgBox Utilisateur = "Pierre"

Vrai ou Faux te seras retourné selon le cas

Bonjour Theze

En parcourant mes messages, je me suis rendu compte que je n'avais plus donné de suite.

Juste vous dire merci car j'avais mal adapté le code dans mon cas réel.

Je fonctionne bien.

Encore merci et toutes mes excuses pour le retard;

Bonjour,

Pas grave, l'important c'est que tu ais pus te dépanner

Rechercher des sujets similaires à "adapter code restreindre ouverture fichier"