Erreur Focus textbox

Résolu
sormick -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    0
    1. sormick
       
      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
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > sormick
         
        Re,

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

        Vous envisagez de faire cette manip pour plusieurs textbox ou pas ???
        0
      2. sormick > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        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
        0
      3. sormick > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        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!!
        0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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