Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…