Microsoft 365 SetFocus sur le premier Texbox vide de la Frame

Piment

XLDnaute Occasionnel
Bonjour à tous, pensée particulière pour Job75.
Je reviens vers vous une fois encore afin de m'aider à solutionner une difficulté que je rencontre.
Je voudrais que dès la sortie( par Tabulation) de la combobox, le focus soit mis sur le premier TextBox vide de la Frame de mon Usf.
Actuellement dès la sortie par Tab ou Entrer, le focus est mis sur le premier TextBox de la Frame.
Ci-joint un fichier minimaliste de mon fichier de base. Le but est de donner plus de fluidité à la saisie.
Par avance merci de votre sollicitude.
 

Pièces jointes

  • Essai4.xlsm
    50.5 KB · Affichages: 15
Solution
Re à tous,
Ca y est!
Les codes fournis par Fanch55, apparemment, fonctionnent après quelques modifications.
J'ai gardé tous mes codes de départ, et j'ai inséré les codes de la Frame de Fanch55.
Têtu comme je suis, je suis resté sur mon idée de départ, tout en restant attentif à ce que vous me proposiez.
C'est-à-dire à la sortie de la comboBox, la Frame avait le Focus (Menu: Ordre de Tabulation). Il fallait donc lui demander de balayer les TextBox jusqu'au premier TexBox vide et de lui faire prendre le Focus.
Apparemment c'est ce que fait les codes de Fanch55.
Je vous mets le fichier en pièces jointes. Si vous pouvez me confirmer, ou si vous pensez qu'à terme il pourrait avoir problème, merci de me faire savoir.

fanch55

XLDnaute Barbatruc
Bonjour,
Il manque le module de classe dans le classeur.
Sinon, une petite correction à tester :
Enrichi (BBcode):
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ctrl As Control

For Each ctrl In Modifier.Frame1.Controls
    If TypeName(ctrl) = "TextBox" Then
        If Len(ctrl.Value) = 0 Then 'si le controle est vide
        ctrl.SetFocus
        End If
    End If
Next ctrl

End Sub
 

Piment

XLDnaute Occasionnel
Bonjour fanch55
Merci infiniment d'avoir répondu à mon appel.
J'avais déjà tenté ces lignes de codes, mais j'ai un beug "Appel inattendu à un accès méthode ou propriété "sur la la ligne "ctrl.SetFocus".
J'ai aussi tenté ce qui suit:
VB:
   For Each ctrl In Array(TextBox2, TextBox3, TextBox4, TextBox5, _
          TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13)
               If ctrl = "" Then
                ctrl.SetFocus
                 End If
   Next ctrl
J'ai le même Beug!
malgré maintes recherches, je ne comprends pas ce que cela signifie!
Merci encore
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
Ce que j'ai fait
VB:
Private Sub ComboBox1_Change()
    Dim Ligne&, i As Byte
    SelectedIndex = Me.ComboBox1.ListIndex
    If Me.ComboBox1.ListIndex = -1 Then
        For i = 1 To 13
            Me.Controls("TextBox" & i) = ""
        Next i
        Else
        Ligne = Me.ComboBox1.ListIndex + 2
        Textbox1 = Ws.Cells(Ligne, "B")
        For i = 1 To 14
         With Me.Controls("TextBox" & i)
                    .BackColor = &H808000
         If Ws.Cells(Ligne, i + 1) <> Empty Then
                 .Value = Format(Ws.Cells(Ligne, i + 1), fmt1)
                 Else
                 .SetFocus
                 .BackColor = &HC0FFC0
                 Exit For
         End If
        End With
        Next i
    End If
End Sub
pas de procédure exit du Combobox1
Jean marie
Edit: avec ajout coloration du TextBox Cible
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
avec
VB:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ctrl As Control

For Each ctrl In Modifier.Frame1.Controls
    If TypeName(ctrl) = "TextBox" Then
        If Len(ctrl.Value) = 0 Then 'si le controle est vide
        ctrl.SetFocus
Exit Sub
        End If
    End If
Next ctrl

End Sub
j'avais le même message :
Appel inattendu à un accès méthode ou propriété "sur la la ligne "ctrl.SetFocus".
Jean marie
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
je reconnais cependant que ca ne fonctionne pas a tout les coup et des fois même c'est le 1er qui prends le focus
deja il faut enlever le select de la ligne dans la feuille
forcement le userform perd le focus
ensuite il y a l'event TxtB_Change(tiens ca me rappelle quelque chose ça)
comme il travail sur les textbox et change leur valeur et que l'event est declenché c'est comme si ils avaient le focus
conclusion ton textbox n'a le focus qu'un millionnième de seconde LOL
 

Piment

XLDnaute Occasionnel
Jean-Marie,
J'ai regardé ton fichier, mais il y a un problème:
Le focus est bien sur le premier textBox vide, mais il se positionne immédiatement dès la saisie du premier chiffre dans la comboBox et iscrit la suite des chiffres saisie directemnt dans le texbox. Du coup les calculs se font avec les chiffres saisis.
Ce que je souhaiterais c'est le focus dans le premier TextBox vide après être sorti de la comboBox par Tabulation ou Entrer
Merci à toi.
 

Discussions similaires

Statistiques des forums

Discussions
313 290
Messages
2 096 857
Membres
106 766
dernier inscrit
jBa2023