IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Protection vba excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 16
    Par défaut Protection vba excel
    Bonjour

    Je viens de terminer un travail qui m a pris des jours, des feuilles excel, des userform, et des codes vb.

    Maintenant je souhaite protéger le tout, en fait je souhaite que ce fichier ne fonctionne que sur un seul ordinateur, je veux surtout éviter que ça soit copié ailleurs.

    Je sais qu' aucune méthode de protection n'est fiable à 100 % mais je veux que vous me suggérez la méthode la moins facile à contourner et qui permet de restriendre l'utilisation à un ou des ordinateurs bien définis.

    Merci

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Afin de limiter l'utilisation à quelques utilisateurs prédéfinis, tu peux gérer la propriété

    D'autre part, afin de rendre obligatoire l'utilisation d'un fichier "officiel" déposé sur une ressource elle aussi obligatoire,
    Tu peux gérer le nom complet (répertoire compris) du fichier. Et ce même si l'utilisateur utilise un serveur connecté par une lettre (Z
    Peut-être date-t-il quelque peu.
    Au demeurant, l'ami Gayot m'avait adressé un code qui shunte cette connexion et que tu peux comparer avec un nom complet.
    J'utilise cette protection pour la plupart des applicatifs que je développe pour mon entité.
    Si cela t'intéresse, je te le reporterai avec plaisir.

    Ces 2 types de protection seront gérés à l'ouverture du classeur, soit par l'évènement Open.

    A plus tard.

    J'oubliais. Bienvenue sur le Forum.

  3. #3
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 16
    Par défaut
    Bonjour MarcelG

    Merci pour votre réponse rapide et précisie;
    Oui je suis intéréssé par le code dont vous parlez, je souhaite le tester si vous permettez

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" _
     (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
     
    Public Function fnctGetUNCPath(ByVal PathName As String) As String
     
    'fonction donnée par GAYOT sur forum, discussion ouverte par MG
    'http://www.developpez.net/forums/d1025923/logiciels/microsoft-office/excel/macros-vba-excel/recherche-repertoire-libelle-integral/
     
    'comment récupérer le chemin intégral du fichier si connection lecteur réseau
    'tuto :
    'http://access.developpez.com/sources/?page=reseau#GetUNC
     
    Const MAX_UNC_LENGTH  As Integer = 512
    Dim strUNCPath As String
    Dim strTempUNCName As String
    Dim lngReturnErrorCode  As Long
     
      strTempUNCName = String(MAX_UNC_LENGTH, 0)
      lngReturnErrorCode = WNetGetConnection(Left(PathName, 2), strTempUNCName, _
        MAX_UNC_LENGTH)
     
      If lngReturnErrorCode = 0 Then
         strTempUNCName = Trim(Left(strTempUNCName, InStr(strTempUNCName, vbNullChar) - 1))
         strUNCPath = strTempUNCName & Mid(PathName, 3)
      End If
     
    fnctGetUNCPath = strUNCPath
    End Function
    Cette fonction retourne le chemin complet (hors raccourci serveur Z:....)

    Dans le même module (de préférence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Function fichier_valide() As Boolean
     
    Dim maréf_true As String
    Dim maréf_théo As String
     
    'Chemin complet de l'applicatif utilisé
    maréf_true = IIf(Len(fnctGetUNCPath(ThisWorkbook.Fullname)) = 0, ThisWorkbook.Fullname, fnctGetUNCPath(ThisWorkbook.Fullname))
    Debug.Print maréf_true
     
    'Chemin "Officiel" tel que souhaité par le développeur
    maréf_théo = "lechemincomplet" & Application.PathSeparator& & ThisWorkbook.Name
     
    fichier_valide = (UCase(maréf_true) = UCase(maréf_théo))
     
    End Function
    A toute fin utile, voici la fonction qui retourne l'autorisation par un ou plusieurs collaborateur précis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function Is_Autorisé() As Boolean
     
    Dim s As String
    s = "la propriété Application Username de tous les collaborateurs séparés par un blanc"
     
    Is_Autorisé = (InStr(s, Application.UserName) > 0)
     
    End Function
    Et dans le code affecté au classeur
    (à adapter selon les contraintes que tu veux voir exercées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Private Sub Workbook_Open()
     
    If fichier_valide = False Or Is_Autorisé = False Then
            MsgBox _
                    Prompt:="Ouverture de l'applicatif défectueuse", _
                    Buttons:=vbCritical, _
                    title:="Usage non valide"
            ThisWorkbook.Close Savechanges:=False
    End If
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 16
    Par défaut
    merci beaucoup

    je vais tester

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Dans la fonction Is_Autorisé, la séparation entre les différents UserName reste à gérer (espace, titet du 6, tiret du 8...)
    Ceci afin de ne pas risquer de concaténer le nom du précédent collaborateur avec le prénom du suivant.

    Je m'explique.

    Si les UserName de ton entité sont sous format Nom [espace] Prénom (exemple Marcel Pierre et Jacques Legendre)
    Si Marcel Pierre et Jacques Legendre sont les collaborateurs autorisés, mieux vaut écrire
    s = "Marcel Pierre / Jacques Legendre"
    Ceci afin d'éviter que le collaborateur Pierre Jacques ait accès à l'applicatif.

    Je le reconnais, ce cas est plutôt rare, et ce même si des prénoms peuvent être des noms.
    Pour ma part, je n'ai jamais rencontré de nom "Marcel" (Il faut être fou )

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,
    Citation Envoyé par saber 3615 Voir le message
    ... je veux surtout éviter que ça soit copié ailleurs
    Ça c'est impossible.
    Je ne m'éterniserais pas sur la facilité de contourner les protections Excel et VBA
    L'autorisation d'accès doit avant tout être une question de confiance et de responsabilité.

    On peut facilement limiter l'accès à un PC grâce au mot de passe de session.
    Contrairement à tout ce qui se fait avec VBA, on peut protéger efficacement un fichier avec un mot de passe pour la lecture (sans utiliser le VBA).

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je complète en plussoyant Patrice => Protéger un classeur Excel est utopique. Le Net regorge d'applications qui font sauter les mots de passe, il n'est même pas toujours nécessaire d'avoir une carte de crédit valide...

    Rien de ce que tu a pu écrire en VBA ne l'a pas déjà été Si tu veux mieux protéger ton appli en or, ce n'est pas en VBA que tu dois développer, et les vraies protections coûtent bonbons et servent rarement à ce qu'un seul utilisateur puisse utiliser ton travail.

    Sur le plan légal, si tu es sous contrat d'emploi, ta production appartient plus à ton employeur qu'à toi... Renseigne-toi donc bien sur ce que tu peux faire ou pas...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut à tous,

    Pierre, je ne sais pas si c'est à mon intention que tu adresses ton post.

    Au cas où...

    Pour ma part, je pensais que le contexte était professionnel.
    Bien sûr, le risque 0 n'existe pas. Toute société, si importante soit-elle, est susceptible de se voir attaquée dans ses systèmes d'information.

    Je me suis peut-être projeté trop vite.

    Mon activité consiste à développer des applicatifs pour l'entité à laquelle j'appartiens.

    Ce que j'ai reporté en VBA est inclus dans chacun de mes applicatifs.
    En effet, à mes débuts, en juillet 2009, il m'est arrivé de constater que mes applicatifs étaient copiés malencontreusement par des collaborateurs dans "Mes Documents"

    C'est dans ce contexte que je me suis placé - trop vite? - pour répondre à notre ami.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Des potions magiques du nord du nord, car belges


    Nom : Triple.jpg
Affichages : 141
Taille : 6,4 Ko

    Nom : Chimay.jpg
Affichages : 136
Taille : 5,1 Ko

    Santé à toutes et tous
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [VBA-Excel] - protection plage de cellule sur i feuilles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/02/2007, 16h52
  2. [VBA-E] protection feuille excel
    Par MAGUIN dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/01/2007, 02h18
  3. [VBA-Excel] protection d'onglet
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2006, 17h48
  4. [VBA EXCEL] Protection feuille avec filtre auto
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2006, 10h48
  5. [VBA Excel] BackgroundQuery et protection de la feuille
    Par Worldofdada dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/01/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo