Auto complète de la zone de texte dans excel VBA
Je suis entrain de créer une feuille excel qui serait saisie semi-automatique d'un texte basé sur le texte contenu dans une colonne particulière. Après avoir essayé de faire un moi-même, sans succès, j'étais à la recherche en ligne pour des exemples de codes que je puisse modifier et l'intégrer dans mon programme. (et de ne pas plagier)
J'ai téléchargé Workbook1.xls de http://www.ozgrid.com/forum/showthread.php?t=144438
Le code est
Option Explicit
Dim ufEventsDisabled As Boolean
Dim autoCompleteEnabled As Boolean
Dim oRange As Range
Private Sub TextBox1_Change()
If ufEventsDisabled Then Exit Sub
If autoCompleteEnabled Then Call myAutoComplete(TextBox1)
End Sub
Sub myAutoComplete(aTextBox As MSForms.TextBox)
Dim RestOfCompletion As String
On Error GoTo Halt
With aTextBox
If .SelStart + .SelLength = Len(.Text) Then
RestOfCompletion = Mid(oRange.Cells(1, 1).AutoComplete(.Text), Len(.Text) + 1)
ufEventsDisabled = True
.Text = .Text & RestOfCompletion
.SelStart = Len(.Text) - Len(RestOfCompletion)
.SelLength = Len(RestOfCompletion)
End If
End With
Halt:
ufEventsDisabled = False
On Error GoTo 0
End Sub
Private Sub TextBox1_AfterUpdate()
Dim strCompleted As String
With TextBox1
strCompleted = oRange.AutoComplete(.Text)
If LCase(strCompleted) = LCase(.Text) Then
ufEventsDisabled = True
.Text = strCompleted
ufEventsDisabled = False
End If
End With
End Sub
Private Sub TextBox1_Enter()
Set oRange = ThisWorkbook.Sheets("Sheet1").Range("f4")
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
autoCompleteEnabled = KeyCode <> vbKeyBack
autoCompleteEnabled = ((vbKey0 <= KeyCode) And (KeyCode <= vbKeyZ))
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Click()
End Sub
Si vous percevez la ligne RestOfCompletion = Mid(en oRange.Les cellules(1, 1).La saisie semi-automatique(.Texte), Len(.Texte) + 1), je me demandais ce que la saisie semi-automatique est en train de faire ici. Ce n'est pas un construit en fonction et n'est pas définie n'importe où. Toujours le code fonctionne très bien. Je suis très curieux.
Grâce
Vous devez vous connecter pour publier un commentaire.
L' .La saisie semi-automatique est une fonction de l'objet Range - il est basé sur le passage du texte à une gamme qui existe ailleurs sur la feuille.
Vous pouvez vous référer à la documentation de cette fonction ici:
http://msdn.microsoft.com/en-us/library/bb209667(v=office.12).aspx
La myAutoComplete fonction gère la découverte de la saisie semi-automatique des données par rapport à la gamme, s'il existe, et les autres pièces dans le code pour mettre en évidence le bon morceau de texte.