Combobox dans userform avec autocompletion (VBA)

dvcom69

XLDnaute Nouveau
Salut à tous,

Je viens à vous car je commence à bloquer sur VBA.
Pour vous donner une vision d'ensemble du projet, j'ai créé un formulaire VBA à travers lequel les utilisateurs rechercheront des infos sur des villes d'europe.

Donc j'ai une bdd sur une feuille du classeur et je fais une RECHERCHEV lorsque que le nom de la ville est tapé dans une combobox. Le seul prob, comme vous le savez, il faut, pour que la recherche fonctionne correctement, que le nom de la ville soit bien orthographié. pour cela, j'ai dejà créé une function qui me permet de simuler l'autocoplétion lorsque l'on commence à taper des lettres dans la combo (vous verrez dans le code pour l'instant c'est une textbox).

Mais comme l'autocomplétion ne fonctionne que si l'entrée saisie est la seule dans la liste, tant que l'utilisateur n'a pas rentré suffisament de lettre, rien ne s'affiche.

Ce que je souhaiterai, c'est comme le système de Google lorsque l'on effectue une recherche: on commence par taper quelques lettres, et une série de suggestions s'affiche en desous.

D'après vous, possible dans combobox sur userform?

Mon code pour l'autocomplétion dans le userform:

Code:
Option Explicit

Dim oRange As Range

Dim iCharCount As Integer

Dim sAuto As String

Dim sTemp As String
Private Sub ville_txt_Enter()

  Set oRange = Worksheets("Tarif").Range("c1000").End(xlUp).Offset(1, 0)

End Sub



Private Sub MyAutoComplete(ByRef oTextbox As Control)

  oRange.Value = oTextbox.Text

  sAuto = oRange.AutoComplete(oTextbox.Text)
  
If Len(sAuto) = 0 Then
    Me.More_Corresp.Visible = True
Else
    Me.More_Corresp.Visible = False
End If

  If Len(sAuto) > 0 Then

    With oTextbox

      sTemp = .Text

      .Text = sAuto

      .SelStart = Len(sTemp)

      .SelLength = Len(sAuto)

    End With

  End If

End Sub



Private Sub ville_txt_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  
  Sheets("Tarif").Range("c1").Value = Me.ville_txt.Text

  oRange.ClearContents

End Sub



Private Sub ville_txt_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

  If KeyCode >= 48 And KeyCode <= 90 Then
  
    Application.EnableEvents = False

    MyAutoComplete Me.ville_txt

    Application.EnableEvents = True

  End If

End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Combobox dans userform avec autocompletion (VBA)

Bonjour,

si tu utilises un combobox, et que la propriété ("MatchEntry") est définie en "1 - fmMatchEntryComplete", lorsque tu tapes tes premières lettres, ce combo te propose les villes commençant par ces lettres, non?

Peut-être?
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG