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 :

Ne pas afficher le vrais texte entré dans un inputbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2015
    Messages : 110
    Par défaut Ne pas afficher le vrais texte entré dans un inputbox
    Bonjour à tous,

    je recherche s'il est possible :

    De ne pas afficher les caractères entrés dans un InputBox ou bien de les remplacer par des X à la place de ceux entré.
    objectif : utilisé pour un mot de passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot_de_passe_J = Application.InputBox("Entrer le mot de passe 5 caractères :", "Mot de passe ADMINISTRATEUR")
    Merci pour les réponses.

    Cordialement

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Autant que je sache, ça n'est possible que dans un Userform
    Insérer une Textbox, et modifier la propriété PasswordChar

  3. #3
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Exact. Inputbox n'est qu'une zone de texte sans options (ou presque).

    Le mieux est de créer un formulaire utilisateur userform.
    Tu pourras ainsi directement dans les propriétés de la textbox lui préciser d'utiliser le format mot de passe.
    L'utilisateur saisi ses caractères mais ce sont des points qui seront affichés.

  4. #4
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2015
    Messages : 110
    Par défaut
    Bonjour à tous,

    merci pour vos réponse.
    je n'ai jamais fait de userform,

    avez vous des explication, un lien qui explique comment faire ?

    Merci d'avance.

    Cordialement

  5. #5
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    Tu as peut-être oublié le plus important
    Dans un module
    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
    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
    99
    100
    101
    102
    103
    104
    Option Explicit
    '----------------------------------
    'API CONSTANTS FOR PRIVATE INPUTBOX
    '----------------------------------
     
    #If VBA7 Then
        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
    #Else
        Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
            ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
        Private Declare Function GetModuleHandle Lib "kernel32" Alias _
            "GetModuleHandleA" (ByVal lpModuleName As String) As Long
        Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
            (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
            ByVal dwThreadId As Long) As Long
        Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
        Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
            (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
            ByVal wParam As Long, ByVal lParam As Long) As Long
        Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
            (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
        Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
    #End If
     
    '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
     
    #If VBA7 Then
        Private hHook As LongPtr
    #Else
        Private hHook As Long
    #End If
     
    '----------------------------------
    '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
    '////////////////////////////////////////////////////////////////////
     
    #If VBA7 Then
    Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
    #Else
    Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    #End If
     
        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
     
    Function InputBoxDK(Prompt, Title) As String
    #If VBA7 Then
        Dim lngModHwnd As LongPtr
    #Else
        Dim lngModHwnd As Long
    #End If
     
        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
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot_de_passe_J = InputBoxDK("Entrer le mot de passe 5 caractères :", "Mot de passe ADMINISTRATEUR")

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 189
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Salut
    Tu as peut-être oublié le plus important
    Bonjour,

    Oui, bien sûr, on peut y arriver, les API de captures de fenêtres peuvent beaucoup de choses
    Toujours intéressant de disposer de ce genre de code
    Maintenant, on peut se demander si c'est plus stable de coder ça comme ça, ou d'insérer un userform, d'y insérer une textbox, et de changer une propriété
    Ca dépend aussi beaucoup si mijean veut apprendre ou juste un truc qui marche

    une initiation aux userform par là :
    https://silkyroad.developpez.com/VBA/UserForm/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Comment ne pas afficher ce qu'on rentre dans ReadLn ?
    Par Feurbach dans le forum Free Pascal
    Réponses: 2
    Dernier message: 24/11/2009, 00h08
  2. Réponses: 4
    Dernier message: 18/04/2007, 16h46
  3. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  4. Modification curseur avec texte entré dans 1 textfield
    Par taillooo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/02/2006, 14h14
  5. Agir sur le texte entré dans un éditeur
    Par FatalError dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2004, 14h54

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