[Resolu] Contrôle saisie sur TextBox

PrinceCorwin

XLDnaute Occasionnel
Bonjour les amis,

Je souhaiterai faire un contrôle de saisie dans un textbox d'un formulaire, et que ce contrôle fasse "à la façon" d'Excel.
Quand vous commencez à écrire un mot, excel termine le mot s'il à déjà rencontrer un autre mot qui commence pareil. Excel met à jour la fin du mot au fur et à mesure que vous tapez le mot.

Voilà, je souhaiterai faire pareil. Pour facilité la saisie dans les formulaires.

J'ai déjà commencé, mais cela ne va pas tout à fait comme il faut.
Ci-joint le script en question.
VB:
Private Sub Text5_Change()
Set f = Sheets("data")
derligne = f.[A65000].End(xlUp).Row
'la variable temp reçoit la partie gauche du Text5 sur une longueur à la position du curseur !
pos = Me.Text5.SelStart
temp = Left(Me.Text5.Text, pos)
If derligne > 1 Then
    Set o = f.[F:F].Find(what:=temp & "*", LookAt:=xlWhole)
    If Not o Is Nothing Then
            Me.Text5 = o.Value
    End If
End If
Me.Text5.SelStart = pos
Me.Text5.SelText = Mid(Me.Text5.Text, pos)
End Sub

Et là.. ca ne va pas.

Merci à tout ceux qui pourrait me venir en aide.
ZeB
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Contrôle saisie sur TextBox

Bonjour Prince, Gérard, Bonjour le forum,

Essaie comme ça :
Code:
Private test As Boolean 'déclare la variable test

Private Sub Text5_Change()
Dim f As Object 'déclare la variable f
Dim derligne As Integer 'déclare la variable derligne
Dim pos As Byte 'déclare la variable pos
Dim temp As String 'déclare la variable temp


If test = True Then Exit Sub 'si test st vraie, sort de la procédure
Set f = Sheets("data")
derligne = f.[A65000].End(xlUp).Row
'la variable temp reçoit la partie gauche du Text5 sur une longueur à la position du curseur !
pos = Me.Text5.SelStart
temp = Left(Me.Text5.Text, pos)
If derligne > 1 Then
    Set o = f.[F:F].Find(what:=temp & "*", LookAt:=xlWhole)
    If Not o Is Nothing Then
            test = True
            Me.Text5 = o.Value
    End If
End If
test = False
Me.Text5.SelStart = pos
Me.Text5.SelLength = Len(Me.Text5) - pos 'sélectionne la fin du texte
End Sub
Seul incovénient, impossible d'effacer une lettre...
 

PrinceCorwin

XLDnaute Occasionnel
Re : Contrôle saisie sur TextBox

Bonjour,
Gérard, Robert,

Merci pour vos réactions et idées.
Je vais transformer mon TextBox en ComboBox. C'est géré en standard. Y a une flèche au bout mais cela ne fait pas si moche que ca !! :)

En plus ca évite l'arrachage de cheveux. :D

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat