Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment autocomplete une zone de texte lors de la saisie dans Excel?

Par défaut, Excel peut se souvenir de ce que vous avez entré dans les cellules de la feuille de calcul en cours et compléter automatiquement ce contenu la prochaine fois lorsque vous tapez une lettre initiale associée dans une nouvelle cellule. Toutefois, si vous souhaitez que tous les contenus que vous avez entrés dans la feuille de calcul soient complétés automatiquement dans une zone de texte (contrôle ActiveX), comment pouvez-vous faire? Cet article fournit une méthode VBA pour vous aider à compléter automatiquement une zone de texte lorsque vous tapez une lettre initiale à l'intérieur.

Saisie semi-automatique d'une zone de texte lors de la saisie avec du code VBA


Saisie semi-automatique d'une zone de texte lors de la saisie avec du code VBA


Veuillez procéder comme suit pour créer une saisie semi-automatique dans une zone de texte lorsque vous tapez une lettre initiale dans la zone de texte.

1. Veuillez insérer une zone de texte en cliquant Développeur > insérer > Zone de texte (contrôle ActiveX). Voir la capture d'écran:

2. Et puis cliquez Développeur > insérer > Zone de liste (contrôle ActiveX) insérer une zone de liste dans la feuille de calcul en cours. Voir la capture d'écran:

3. Cliquez avec le bouton droit sur l'onglet de la feuille, puis cliquez sur Voir le code à partir du menu contextuel comme ci-dessous capture d'écran illustré.

4. dans le Microsoft Visual Basic pour applications fenêtre, s'il vous plaît copiez et collez ci-dessous le code VBA dans la fenêtre Code. Et puis cliquez Outils > Les références, puis vérifiez Microsoft Scripting Runtime boîte dans la Références - VBAProject boite de dialogue. Voir la capture d'écran:

Code VBA: remplir automatiquement une zone de texte lors de la saisie

Dim xRg As Range
Dim xDic As New Dictionary
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.TextBox1.Value = Me.ListBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xVal As String
    On Error Resume Next
    If IsNumeric(Target.Value) Then
        xVal = Str(Target.Value)
    Else
        xVal = Target.Value
    End If
    If xVal <> "" Then
        If Not xDic.Exists(xVal) Then
            xDic.Add xVal, xVal
        End If
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Me.ListBox1.Visible = False
End Sub
Private Sub Worksheet_Activate()
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    If xRg Is Nothing Then
        Set xRg = ActiveSheet.UsedRange
    End If
    Me.ListBox1.Visible = False
    xDic.RemoveAll
    With Me.ListBox1
        For I = 1 To xRg.Count
            xStr = xRg(I).Value
            If xStr <> "" Then
                .AddItem xStr
                If Not xDic.Exists(xStr) Then
                    xDic.Add xStr, xStr
                End If
            End If
        Next
    End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With Me.ListBox1
        .Top = Me.TextBox1.Top
        .Left = Me.TextBox1.Left + Me.TextBox1.Width
        .Width = Me.TextBox1.Width
    End With
    TextBoxVal Me.TextBox1.Object
End Sub
Sub TextBoxVal(xTextBox As Variant)
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    Application.ScreenUpdating = False
    If xRg Is Nothing Then Exit Sub
    Me.ListBox1.Clear
    xStr = xTextBox.Value
    If xStr = "" Then
        Me.ListBox1.Visible = False
        Application.EnableEvents = True
        Exit Sub
    End If
    For I = 0 To UBound(xDic.Items)
        If Left(xDic.Items(I), Len(xStr)) = xStr Then
            Me.ListBox1.AddItem xDic.Items(I)
        End If
    Next
    Me.ListBox1.Visible = True
    If Me.ListBox1.ListCount > 0 Then
        With xTextBox
            .Value = Me.ListBox1.List(0)
            .SelStart = Len(xStr)
            .SelLength = Len(Me.ListBox1.List(0))
        End With
    End If
    Me.ListBox1.Activate
    Me.ListBox1.Selected(0) = True
    Application.ScreenUpdating = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Me.TextBox1.Value = Me.ListBox1.Value
    End If
End Sub

Note: Dans le code, ListBox1 et Textbox1 sont le nom de la zone de liste et de la zone de texte que vous avez insérés dans votre feuille de calcul.

5. appuie sur le autre + Q touches pour quitter le Microsoft Visual Basic pour applications fenêtre.

6. Désactivez le mode Création en cliquant sur Développeur > Mode de conception dans la feuille de travail.

7. Passez maintenant à une autre feuille de calcul, puis revenez à la feuille de calcul précédente pour activer le code VBA.

À partir de maintenant. Lorsque vous entrez une lettre initiale dans la zone de texte, tous les textes qui commencent par cette lettre que vous avez entrée dans la feuille de calcul seront listés dans la zone de liste située sur le côté droit de la zone de texte. S'il vous plaît double-cliquez sur votre nécessaire pour l'entrer dans la zone de texte. Voir la capture d'écran:

Note: Vous pouvez utiliser le Up or Vers le bas la touche fléchée pour vous déplacer parmi tous les textes de saisie semi-automatique dans la zone de liste, puis appuyez sur la touche Entrer clé pour entrer celui nécessaire dans la zone de texte.


Articles Liés:



Outils de productivité recommandés

Office Tab

étoile d&#39;or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d&#39;or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d&#39;or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d&#39;écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    suprio · 11 months ago
    Why would anyone go for writing a script when there are simpler ways to get a dropdown list???