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

Contribuez Discussion :

[Textbox] Autocomplétion


Sujet :

Contribuez

  1. #1
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut [Textbox] Autocomplétion
    Hello à tous,

    suite à une question sur le forum VBA, voici une implémentation d'une autocomplétion sur un textbox.
    A mettre dans un module de code du formulaire pour une textbox nommée txtInput

    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
    ' rentre ici la plage des données en autocomplétion
    Private Const r As String = "A1:A11"
    Private sInput As String
    ' variable de blocage de la procédure Change
    Dim blnStop As Boolean
     
    Private Sub txtInput_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ' gestion des touches d'effacement
        If (KeyCode = vbKeyBack) Or (KeyCode = vbKeyDelete) Then
            blnStop = True
        Else
            blnStop = False
        End If
     
    End Sub
     
    Private Sub txtInput_Change()
        Dim sWord As String
     
        If blnStop Then
            blnStop = False
        Else
            sInput = Left(Me.txtInput, Me.txtInput.SelStart)
            sWord = GetFirstCloserWord(sInput)
            If sWord & "" <> "" Then
                blnStop = True
                Me.txtInput.Text = sWord
                Me.txtInput.SelStart = Len(sInput)
                Me.txtInput.SelLength = 999999
            End If
        End If
     
    End Sub
     
    Private Function GetFirstCloserWord(ByVal Word As String) As String
     
        Dim c As Range
        For Each c In ActiveSheet.Range(r).Cells
            If c.Value Like Word & "*" Then
                GetFirstCloserWord = c.Value
                Exit Function
            End If
        Next c
        Set c = Nothing
     
    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    Merci pour ce code.

    J'ai modifié une ligne dans la fonction GetFirstCloserWord pour le rendre insensible à la casse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If LCase(c.Value) Like LCase(Word & "*") Then
    Cordialement

Discussions similaires

  1. [VB.NET] Pb sur update à partir champs Textbox
    Par patdez dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/06/2006, 09h28
  2. [VB.NET] Sauvegarde dans TextBox des logons utilisés
    Par stephane93fr dans le forum ASP.NET
    Réponses: 3
    Dernier message: 27/10/2005, 11h00
  3. Réponses: 2
    Dernier message: 08/04/2004, 11h11
  4. Réponses: 3
    Dernier message: 25/03/2004, 11h35
  5. [VB6] [Interface] ScrolBar & TextBox
    Par DarkVader dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2002, 18h40

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