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 :

Mot de passe


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 68
    Par défaut Mot de passe
    Bonjour,

    J'ai créé une feuille excel pour le boulot, que certains utilisateurs doivent remplir. j'aimerai m'assurer que ce sont bien les utilisateurs désignés qui utilisent la feuille.
    Les utilisateurs ont tous un login mot de passe pour leur session Windows. Je sais comment récupérer le nom d'utilisateur de la session (Environ("USERNAME"), mais j'aimerai demander à l'utilisateur de taper le mot de passe de sa session, et vérifier que c'est le bon..

    Est-ce que c'est possible ? si oui, quelqu'un peut m'aiguiller sur la façon de faire ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Les utilisateurs ont tous un login mot de passe pour leur session Windows. Je sais comment récupérer le nom d'utilisateur de la session (Environ("USERNAME"), mais j'aimerai demander à l'utilisateur de taper le mot de passe de sa session, et vérifier que c'est le bon..
    Parce-que tu crois que la session aurait été ouverte avec un mot de passe erroné ?

    De toutes manières, tu peux toujours t'amuser à utiliser la protection Excel elle-même (elle sera "violable", mais bon ... )

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Je décline toutes responsabilité en cas d'utilisation frauduleuse de ce code!

    Car tu pourrais tout aussi bien utiliser ce stratagèmes pour pirater le login password de tes contemporains.

    https://www.developpez.net/forums/d1...a/#post9926973
    Dernière modification par Invité ; 03/09/2018 à 18h44.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par tasse2the Voir le message
    Les utilisateurs ont tous un login mot de passe pour leur session Windows. Je sais comment récupérer le nom d'utilisateur de la session (Environ("USERNAME"), mais j'aimerai demander à l'utilisateur de taper le mot de passe de sa session, et vérifier que c'est le bon..
    Il y a plus simple : dans une macro évènementielle SheetActivate (ou autre), tu vérifie si le USERNAME correspond bien à la feuille que l'utilisateur tente d'ouvrir. Si ça ne correspond pas, tu demandes à la macro de refuser l'activation avec un joli MsgBox fustigeant l'utilisateur qui a fait cette tentative.
    https://msdn.microsoft.com/fr-fr/vba...te-event-excel
    Pas besoin d'autre mot de passe que celui du compte Windows.

    Bien sûr, VBA étant un gruyère question sécurité, il y a de multiples façon de contourner cette sécurité si l'utilisateur est réellement déterminé dans sa démarche frauduleuse.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 68
    Par défaut
    unparia :

    Non, je suis bien certain du contraire, mais visiblement ca ne suffit pas. Chez nous, on ne plaisante pas avec la sécurité informatique (LOOOOOOL).
    J'ai bien conscience que ma question, à la base est complètement idiote, qu'il est bien évident qu'un utilisateur qui va utiliser une feuille excel ne va pas s'amuser à le faire à partir de la session de son voisin, mais ça ne suffit pas à mes responsables, qui veulent des documents datés et signés. En bref, ils ont la culture du papier, et ils veulent qu'en informatique, se soit pareil. D'où des demandes complètement débiles, supposées s'assurer de l'absence de fraude (même si les utilisateurs sont tout à fait capables de se communiquer leurs mots de passe régulièrement, mais bref). Ce qui m'étonnent, c'est qu'ils n'aient pas les mêmes exigences avec le papier. A leur place, je demanderais systématiquement une double signature. Celle du technicien qui remplit le papier, et celle du témoin qui voit le technicien signer sa feuille. A vrai dire, une troisième signature, du gars qui a vu le gars qui a vu le gars qui signait, ce serait mieux. C'est à peu près ce qu'on me demande sur le fichier informatique.

    dysorthographie :

    A priori, c'est exactement ce qu'il me fallait, et il semble que ca fonctionne nickel. Merci. Reste à savoir si l'IT de ma société acceptera de voir diffusé ce type de fichier (j'ai des doutes, mais je vais quand même essayer).

    Une chose est sure, si l'IT était aussi exigeante au niveau sécurité avec les logiciels du commerce qu'avec les développements internes, il n'y aurait certainement plus d'ordinateur sur le site.

    Merci à tous en tout cas pour vos réponses. je l'ai jamais dit jusqu'à maintenant, mais c'est vraiment appréciable de disposer d'une communauté de gens sympas et plus que compétents pour donner un (gros) coup de main.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par tasse2the Voir le message
    Chez nous, on ne plaisante pas avec la sécurité informatique (LOOOOOOL).
    "Sécurité informatique" et "VBA", c'est antithétique.

    ça ne suffit pas à mes responsables, qui veulent des documents datés et signés.
    Dans ce cas, tu peux mettre en place une validation de document par Accrobate.
    Il suffit d'avoir une version Pro d'Accrobate pour créer la base de donnée des mots de passe et un Accrobate Reader sur chaque poste utilisateur.
    Ensuite, chaque utilisateur exporte son document en PDF et le "signe" virtuellement (avec saisie de mot de passe), le fichier PDF conservant une trace de cette signature.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 68
    Par défaut
    Bonjour à tous

    Je rouvre la discussion, parce que je n'arrive plus à accéder au mot de passe de la session ouverte sur l'ordinateur, pour le comparer au mot de passe saisi par l'utilisateur. quelqu'un aurait une idée ?

    Merci d'avance

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 226
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Plus de 7 ans après ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 065
    Par défaut
    Citation Envoyé par tasse2the Voir le message
    Je rouvre la discussion, parce que je n'arrive plus à accéder au mot de passe de la session ouverte sur l'ordinateur, pour le comparer au mot de passe saisi par l'utilisateur. quelqu'un aurait une idée ?
    "La fonction Windows que vous cherchez est LogonUserW (ou LogonUserA), exposée par advapi32.dll.
    C’est l’API standard permettant de vérifier si un couple nom d’utilisateur / mot de passe correspond à un compte Windows valide."
    Vous pouvez demander à une IA de vous fournir un code en VBA.
    Bonne continuation.

  10. #10
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 065
    Par défaut
    En complément, une fonction qui permet de saisir le mot de passe de la session Windows dans une boîte où la saisie est masquée.
    La fonction "ControleMotDePasseSession" renvoie TRUE si le mot de passe est correct, FALSE dans le cas contraire.
    A adapter à votre convenance.
    Bonne continuation.

    Code VBA : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    ' Sources:https://www.developpez.net/forums/d2121319/logiciels/microsoft-office/excel/macros-vba-excel/ne-afficher-vrais-texte-entre-inputbox/
     
    Option Explicit
     
    '----------------------------------
    'API CONSTANTS FOR PRIVATE INPUTBOX
    '----------------------------------
     
    Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
    Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
    Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long
    Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long
    Private Declare PtrSafe Function LogonUser Lib "advapi32" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, phToken As Long) As Long
     
    'Constants to be used in our API functions
    Private Const EM_SETPASSWORDCHAR = &HCC
    Private Const WH_CBT = 5
    Private Const HCBT_ACTIVATE = 5
    Private Const HC_ACTION = 0
     
    Private hHook As LongPtr
     
    '----------------------------------
    'PRIVATE PASSWORDS FOR INPUTBOX
    '----------------------------------
     
    '////////////////////////////////////////////////////////////////////
    'Password masked inputbox
    'Allows you to hide characters entered in a VBA Inputbox.
    '
    'Code written by Daniel Klann
    'March 2003
    '64-bit modifications developed by Alexey Tseluiko
    'and Ryan Wells (wellsr.com)
    'February 2019
    '////////////////////////////////////////////////////////////////////
     
    '-----------------------------------------------------------------------------------------------
    Public Function ControleMotDePasseSession() As Boolean
    '-----------------------------------------------------------------------------------------------
    Dim hToken As Long
    Dim MotDePasse As String
     
    MotDePasse = InputBoxDK("Mot de passe de votre session Windows : ", ThisWorkbook.Name)
     
    If LogonUser(Environ("USERNAME"), "", MotDePasse, 2, 0, hToken) <> 0 Then
        ControleMotDePasseSession = True
        MsgBox "Mot de passe valide", vbInformation, ThisWorkbook.Name
    Else
        MsgBox "Échec de la connexion", vbCritical, ThisWorkbook.Name
    End If
     
    End Function
     
    '-----------------------------------------------------------------------------------------------
    Public Function InputBoxDK(Prompt, Title) As String
    '-----------------------------------------------------------------------------------------------
    Dim lngModHwnd As LongPtr
    Dim lngThreadID As Long
     
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    InputBoxDK = InputBox(Prompt, Title)
    UnhookWindowsHookEx hHook
     
    End Function
     
    '-----------------------------------------------------------------------------------------------
    Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
    '-----------------------------------------------------------------------------------------------
    Dim retVal
    Dim strClassName As String, lngBuffer As Long
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If
     
    strClassName = String$(256, " ")
    lngBuffer = 255
    If lngCode = HCBT_ACTIVATE Then 'A window has been activated
        retVal = GetClassName(wParam, strClassName, lngBuffer)
        If Left$(strClassName, retVal) = "#32770" Then
            'This changes the edit control so that it display the password character *.
            'You can change the Asc("*") as you please.
            SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam
     
    End Function
    '-----------------------------------------------------------------------------------------------
    '-----------------------------------------------------------------------------------------------

Discussions similaires

  1. [phpMyAdmin] [phpMyAdmin] Problème mot de passe Root !
    Par StouffR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 26/09/2014, 11h59
  2. [PostgresSQL]Pb accés des utilisateurs sans mot de passe
    Par woodwai dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/05/2003, 16h06
  3. [VB6] [ADO] [Access] Changer le mot de passe
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/03/2003, 09h45
  4. Réccupération du mot de passe d'une connexion
    Par zinaif dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2002, 18h32
  5. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16

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