XL 2016 UserForm : forcer la saisie sur le textBox

Sylvain133

XLDnaute Nouveau
Bonjour à tous,

J'aimerais savoir comment à l'ouverture d'un UserForm on peut faire pour ne pas cliquer sur la texteBox pour pouvoir saisir du texte mais être directement dessus (sans aide de la souris).

En vous remerciant d'avance pour vos retours.
 

Sylvain133

XLDnaute Nouveau
VB:
Private Sub CommandButton1_Click()
'boucle uniquement si le numéro de matricule est rentré

If TextBox1 = 260998 Then
    Unload ETAPE1
    Sheets("USERFORM").Activate
Else
    If Len(TextBox1) = 6 Then
        'lexique
        Dim MATRICULE As Double    'numéro de matricule rentré dans le TexBox1
        Dim NBLIG As Double     'nombre de lignes
        Dim NUMTHEM As String   'numéro de la thématique
        Dim NOMTHEM As String   'nom de la thématique
        Dim i As Double     'compteur
        Dim j As Double     'compteur
    
        
        NUMTHEM = ""
        Me.Label2.Caption = NUMTHEM
        Me.Label2.Visible = False
        
        'on récupère le numéro de matricule entré par l'utilisateur dans la variable NOMBRE
        MATRICULE = TextBox1
        
        'on active la feuille de données "DRT"
        Sheets("DRT").Activate
        
        'on calcule le nombre de lignes du fichier (de matricule, un matricule étant l'identifiant de chaque individu)
        NBLIG = Cells(Rows.Count, 1).End(xlUp).Row
        
        'on boucle sur le nombre de lignes de la base "DRT"
        For i = 2 To NBLIG
            'on recherche le numéro de matricule dans la base de données
            If MATRICULE = Cells(i, 1) Then
                'lorsqu'on l'a trouvé on attribut à la variable NUMTHEM le numéro de la thématique de l'emploi dans lequel l'utilisateur se situe
                NUMTHEM = Cells(i, 17)
                'on sort de la boucle lorsqu'on l'a trouvé
                Exit For
            End If
        Next i
        
        'on fait de même pour la base "DRF" si le numéro de matricule n'a pas été trouvé dans la base "DRT"
        If NUMTHEM = "" Then
            'on active la feuille de données "DRF"
            Sheets("DRF").Activate
            
            'on calcule le nombre de lignes du fichier (de matricule, un matricule étant l'identifiant de chaque individu)
            NBLIG = Cells(Rows.Count, 1).End(xlUp).Row
            
            'on boucle sur le nombre de lignes de la base "DRF"
            For i = 2 To NBLIG
                'on recherche le numéro de matricule dans la base de données
                If MATRICULE = Cells(i, 1) Then
                    'lorsqu'on l'a trouvé on attribut à la variable NUMTHEM le numéro de la thématique de l'emploi dans lequel l'utilisateur se situe
                    NUMTHEM = Cells(i, 10)
                    'on sort de la boucle lorsqu'on l'a trouvé
                    Exit For
                End If
            Next i
        End If
            
            
            
        'algorithme
        
        NOMTHEM = ""
        
        If NUMTHEM <> "" Then
            
            Sheets("E1").Activate
            For i = 2 To 195
                If Cells(i, 2) = NUMTHEM Then
                    NOMTHEM = Cells(i, 1)
                    Exit For
                End If
            Next i
            
    
            If NOMTHEM = "" Then
                Sheets("E2").Activate
                For i = 2 To 91
                    If Cells(i, 2) = NUMTHEM Then
                        NOMTHEM = Cells(i, 1)
                        Exit For
                    End If
                Next i
            End If
    
            If NOMTHEM = "" Then
                Sheets("E3").Activate
                For i = 2 To 11
                    If Cells(i, 2) = NUMTHEM Then
                        NOMTHEM = Cells(i, 1)
                        Exit For
                    End If
                Next i
            End If
            
    
            If NOMTHEM = "" Then
                Sheets("E4").Activate
                For i = 2 To 8
                    If Cells(i, 2) = NUMTHEM Then
                        NOMTHEM = Cells(i, 1)
                        Exit For
                    End If
                Next i
            End If
            
        End If
            
        
        'si le thème est différent d'une valeur vide alors on affiche le label dans lequel il sera
        If NOMTHEM <> "" Then
            Me.Label2.Visible = True
            Me.Label5.Visible = True
        Else
            MsgBox ("Nous vous invitons à découvrir le référentiel emplois au refuge et à échanger avec votre RH et/ou manager pour identifier votre emploi")
            Me.TextBox1.Value = ""
            TextBox1.SetFocus
        End If
        
        'on affiche le thème dans le label
        Me.Label2.Caption = NOMTHEM
    Else
        TextBox1.SetFocus
    End If
End If

End Sub

'Private Sub CommandButton2_Click()
'Me.Label2.Visible = False
'Me.Label5.Visible = False
'TextBox1 = ""
'TextBox1.SetFocus
'End Sub



'Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'If KeyCode = 116 Then CommandButton2_Click
'End Sub

'Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'  Select Case KeyCode
'    Case 144: image1_Click
'  End Select
'End Sub

Private Sub textbox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub

Private Sub frame2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub

Private Sub userform_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub


Private Sub Frame1_Layout()

    Frame1.Left = 250
    Frame1.BackColor = RGB(30, 193, 188)
    Label1.BackColor = RGB(30, 193, 188)
    
End Sub

Private Sub Frame2_Layout()

    Frame2.Left = 40
    Frame2.BackColor = RGB(255, 104, 29)
    Label3.BackColor = RGB(255, 104, 29)

End Sub

Private Sub image1_Click()
    Me.Label2.Visible = False
    Me.Label5.Visible = False
    TextBox1 = ""
    TextBox1.SetFocus
    MsgBox ("cc")
End Sub


Private Sub TextBox1_Change()
If Not IsNumeric(TextBox1) Then TextBox1 = ""
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = CloseMode = 0
End Sub

Private Sub UserForm_Layout()
    Application.ScreenUpdating = False
    Me.Width = Application.Width
    Me.Height = Application.Height
    Me.Top = 0
    Me.Left = 0
    Application.ScreenUpdating = True
    
End Sub

'Private Sub UserForm_Terminate()
'    Fermeture.Show
'End Sub

Private Sub Frame3_Layout()

    Frame3.Left = 510
    Frame3.BackColor = RGB(217, 28, 122)
    Label4.BackColor = RGB(217, 28, 122)
    Label5.BackColor = RGB(217, 28, 122)

End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bon ben on va pas chercher plus loin
VB:
Unload ETAPE1
    Sheets("USERFORM").Activate

Code:
  Sheets("E2").Activate

Code:
  Sheets("E3").Activate

et j'en passe et des meilleures ;)

dans le contexte que tu veux créer c'est rédhibitoire
aucun unload aucun activate ne doit etre opéré
travaille en non modal et supprime les unload et et activate

exemple de ce qui doit être fait
Code:
If NOMTHEM = "" Then
                with Sheets("E4")'.Activate
                For i = 2 To 8
                    If Cells(i, 2) = NUMTHEM Then
                        NOMTHEM = Cells(i, 1)
                        Exit For
                    End If
                Next i
           end with
 End If
et pour tout tes if pareils ;)
 

Sylvain133

XLDnaute Nouveau
Merci beaucoup pour l'info ! Je ne connaissais pas cette subtilité. Voulant sortir de l'UserForm uniquement avec le code 260998 je vais abandonner la touche F5 car j'ai besoin de mon Unload et de ce code pour déactiver la croix rouge :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = 0
End Sub

Merci tout de même.
 

patricktoulon

XLDnaute Barbatruc
si mais oublie pas de le remettre a la fermeture sinon tu risque de perdre la touche f5
et si tu tape f5 quand le userform est fermé ben ... ligne jaune "object non défini"
;)
tu dois le faire a l'activate et l'enlever au before_close
ben non je viens de tester et le textbox bloque par son focus
Private Sub UserForm_Activate()
Application.OnKey "{F5}", "CommandButton1_Click"
End Sub

même en mode non modal !!!!
 
Dernière édition:

Discussions similaires

Réponses
93
Affichages
2 K
Réponses
15
Affichages
511

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote