XL 2010 Conserver le focus d'un TextBox [Résolu par "mapomme"]

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Depuis un CommandButton j'appelle une calculatrice.
Par défaut, la calculatrice s'affiche dans le coin inférieur droit de l'écran. Son 1er TextBox est sélectionné pour y entrer une donnée.
Si je reclique sur le CommandButton, la calculatrice se positionne au milieu de l'écran. Si je reclique sur le CommandButton, la calculatrice revient dans le coin inférieur droit de l'écran, et ainsi de suite.
Je voudrais que, lorsque je clique sur le CommandButton, le 1er TextBox soit toujours sélectionné.
Enfin, si je rentre une bourde dans ce TextBox (ex. : 1/0), un message averti l'utilisateur de l'incohérence. Je voudrais, après avoir refermé la boîte, que le 1er TextBox de la calculatrice soit automatiquement sélectionné.
Comment s'y prendre ?
 

Fichiers joints

Dernière édition:

Alza

XLDnaute Junior
C'est à cause du fait que ton USF est non modal je pense, après comment régler le soucis je ne sais pas ..
 

Magic_Doctor

XLDnaute Barbatruc
Bonjour Alza,

Je ne suis pas convaincu que ce soit dû au fait que l'USF est non modal. Du reste, dans la situation inverse, le bouton serait alors tout simplement bloqué et l'USF condamné à s'afficher uniquement dans le coin inférieur droit de l'écran, ce qui perdrait tout intérêt.
Je pense qu'il doit y avoir une solution à ce truc-là.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir Magic_Doctor, à tous,

Un essai un peu tarabiscoté o_O.

J'ai utilisé un TextBox "bidon" nommé txtBidon. Ce contrôle figure dans le UserForm mais on ne le voit pas. Il faut élargir le UserForm pour l'apercevoir.

J'ai utilisé ce contrôle comme un contrôle auxilliaire qu'on sélectionne avant de sélectionner TextBox1.

Dans tout le code, j'ai remplacé TextBox1.SetFocus par l'appel à la procédure DansTextBox1():
VB:
Sub DansTextBox1()
  With USF_Calculatrice
    .txtBidon.SetFocus
    .TextBox1.SetFocus
  End With
End Sub

J'ai également modifié la procédure évènementielle Private Sub TextBox1_KeyDown:
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        KeyCode = 0         ' ligne ajoutée
        ControlClick 11
    End If
    DansTextBox1
End Sub
 

Fichiers joints

Magic_Doctor

XLDnaute Barbatruc
Bonjour mapomme, le forum,

Alors là bravo !
Je me demandais si un truc aussi simple après tout serait possible.
Fichtre, quelle aventure pour y arriver !
Faut reconnaître que VBA c'est parfois déconcertant...

Merci pour ton intervention.
 

Discussions similaires


Haut Bas