Erreur Focus textbox

Résolu
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

  1. 0
    1. 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
      0
    2. @sormickRe,

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

      Vous envisagez de faire cette manip pour plusieurs textbox ou pas ???
      0
    3. @f894009oui 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
      0
    4. @f894009j'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!!
      0
  2. 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
    
    0