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

Quel textbox à le focus ?

  • Initiateur de la discussion Initiateur de la discussion carlos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

carlos

XLDnaute Impliqué
Bonjour

J'ai une serie de 20 textbox : textbox1 à textbox 20
En cliquant sur un bouton j'aimerai savoir lequel à le focus(Son nom) ?

merci

Carlos
 
Re : Quel textbox à le focus ?

Bonjour tototiti2008

en effet ..;

Mais quand je clic sur le textbox , je pourrai envoyer le nom dans une cellule et le récuperer en cliquant sur le bouton .

Le probleme est que :

sub textbox1.click () n'existe pas!

Merci
 
Re : Quel textbox à le focus ?

Bonjour Carlos, tototiti😉,

Il faut que ton (tes) boutons de UserForm aient la propriété TakeFocusOnClick=False

Exemple d'action possible ensuite:

Code:
Private Sub CommandButton1_Click()
    'Si le contrôle actif est un TextBox
    If TypeName(Me.ActiveControl)="TextBox" then
        msgbox ActiveControl.name
    End If
End Sub
A+
 
Re : Quel textbox à le focus ?

Bonjour Hasco

En faite mes textbox sont sur des multipages et cela me donne le nom du multipage actif.

Sinon j'ai testé ta proposition sur un USF simple avec que des textbox et ca marche.

Comment faire pour échapper à ce multipage?

Carlos
 
Re : Quel textbox à le focus ?

Re,

peut-être grace à cette modification du code de Hasco :

Code:
Private Sub CommandButton1_Click()
    'Si le contrôle actif est un TextBox
    If TypeName(Me.ActiveControl) = "TextBox" Then
        MsgBox ActiveControl.Name
    ElseIf TypeName(Me.ActiveControl) = "MultiPage" Then
        MsgBox ActiveControl.SelectedItem.ActiveControl.Name
    End If
End Sub
 
Re : Quel textbox à le focus ?

Re

Pas possible avec multipage.

Il faut donc que tu passes par l'évènement 'Enter' de chaque Textbox1 et prévoir une variable String en tête de module pour récupérer le nom du dernier TextBox ayant eu le focus.
Code:
'Variable en tête de module
Private NomTextBoxFocus as String
 
 
'A répéter pour chaque textbox 
Private TextBox1_Enter()
   NomTextBox = "TextBox1"
End Sub
Ou parcourir tous tes textbox sur CommandButton1_click:

Code:
Private Sub CommandButton1_Click()
Dim i As Byte, X
For i = 1 To 20
    On Error Resume Next
    X = Controls("TextBox" & i).CurX
    If Err.Number = 0 Then
        Label1 = "TextBox" & i
        Exit For
    End If
    Err.Clear
Next i
End Sub

A+
 
Dernière modification par un modérateur:
Re : Quel textbox à le focus ?

Re

j'ai testé en mettant les textbox directement sur le multipage .Ton code marche impeccable.

Maintenant si je les mets sur le tabstrip , je ne sais pas quoi ercrire.

Carlos
 
Re : Quel textbox à le focus ?

Re Hasco, tototiti2008

Franchement Hasco je suis impréssionné .

Ta derniere methode marche super

Je pense que celle :

Private Sub CommandButton1_Click()
'Si le contrôle actif est un TextBox
If TypeName(Me.ActiveControl) = "TextBox" Then
MsgBox ActiveControl.Name
ElseIf TypeName(Me.ActiveControl) = "MultiPage" Then
MsgBox ActiveControl.SelectedItem.ActiveControl.Name
End If
End Sub

devrait aussi fonctionner mais elle n'est aboutie.

Bravo et merci

Carlos
 
Re : Quel textbox à le focus ?

Re,

carlos, à priori le TabStrip ne change pas les contrôles donc le code que j'ai posté devrait fonctionner (j'ai testé sur ton exemple)

Hasco, c'est là qu'on se rend compte de la plus value du forum : c'est la collaboration 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
194
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…