Erreur Focus textbox [Résolu/Fermé]

Signaler
-
Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020
-
Bonjour,

j'ai plusieurs textbox
J'utilise un code vba qui me permet en cliquant sur une listbox de revenir sur le dernier textbox que j'ai utilisé. Voici le code:

Private box As MSForms.TextBox
Private Sub TextBox1_enter()
Set box = Me.TextBox1
End Sub
box.Value = Me.ListBox1.Value
Me.Controls(box.TabIndex + 1).SetFocus


le problème c'est que ce code:
Me.Controls(box.TabIndex + 1).SetFocus
ne fonctionne pas!.je souhaiterais passer à la textbox suivante après avoir validé les informations de la listbox au dernier textbox utilisé.
voici le message d'erreur que j'ai:
le focus ne peut être déplacé sur le contrôle car celui-ci est invisible, non activé..........

Comment faire?

2 réponses

Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020
1 322
Heuuu je ne suis pas doué en VBA.. désolé.
je n'arrive pas à le faire fonctionner.
j'ai mis le code:
Sub SetFocusByTabIndex(frm as Form, iTab as Integer)
On Error Resume Next
Dim ctl as Control

For each ctl in frm.Controls
If ctl.TabIndex = iTab Then
ctl.SetFocus
Exit For
End If
Next ctl
End Sub

dans un module , puis j'ai mis le code:
Call SetFocusByTabIndex(Me,3) dans la listbox
l'erreur qui s'affiche est:
type défini par l'utilisateur non défini
Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020
1 322 > sormick
Re,

Marche pas, code non teste (ecrit au debut).

Vous envisagez de faire cette manip pour plusieurs textbox ou pas ???
>
Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020

oui je veux le faire sur plusieurs textbox.j'explique un peu plus:
je commence à saisir sur la textbox1, une liste de valeurs s'affiche sur la listbox.
je clique dessus.la valeur cliqué s'affiche sur la textbox1 puis automatiquement il passe à la textbox suivante. et ainsi de suite pour toutes les textbox.
il y a un total de 35 textbox
>
Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020

j'ai réussi!!
voici le code que j'ai trouvé à mettre sur la listbox:
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.TabIndex = box.TabIndex + 1 Then
ctl.SetFocus
Exit For
End If
Next

bonne journée à tous!!
Messages postés
15266
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 août 2020
1 322
Re,

code corrige pour d'autres au cas ou:

Private box As MSForms.TextBox

Private Sub TextBox1_enter()
    Dim TabTxt As Integer
    
    Set box = TextBox1          '?????????????????
    box.Value = ListBox1.Value
    TabTxt = box.TabIndex + 1
    Call SetFocusByTabIndex(Me, TabTxt)
End Sub

Sub SetFocusByTabIndex(ByRef MaForm As Object, iTab As Integer)
    On Error Resume Next
    Dim ctl As Control

    For Each ctl In MaForm.Controls
        If ctl.TabIndex = iTab Then
            ctl.SetFocus
            x = ctl.Name
            Exit For
        End If
    Next ctl
End Sub