XL 2016 Focus sur contrôle hors Frame dans UserForm

Lorenzini

XLDnaute Occasionnel
Bonjour,

J'ai créé un formulaire dans lequel j'ai placé plusieurs contrôles.
Pour être plus précis : il y'a un Frame dans lequel j'ai placé tous mes contrôles SAUF 2 boutons de commande (Annuler et Valider...qui sont dans le fond de ce formulaire).
Au fur et à mesure des saisies, je valide le passage d'un contrôle à l'autre en pressant la touche [Entrée] ; jusque-là, tout va bien.
Sauf que : en arrivant dans le DERNIER contrôle (qui est un TextBox), je souhaitais (par facilité pour les futurs utilisateurs) que la validation des données saisies dans ce contrôle me place le focus sur le bouton "Valider" (qui est en dehors du Frame).
Je pensais qu'il me suffirait de placer un .SetFocus, mais déjà là, je me suis demandé (et j'ai testé) : où placer cette commande ?
dans le TextBox_Exit ? ou le CommandButton3_Enter (le fameux bouton de commande rehaussé d'un '+' qui prend le focus à la suite ET QUE JE NE VEUX PAS QU'IL LE PRENNE !!)
Il m'en aura fait perdre mon français !! mais vous aurez compris.
Le problème en faisant çà, c'est qu'une fois que j'ai validé par [Entrée], ou le bouton (CommandButton3 n'est plus cliquable) ou plus aucun autre contrôle n'est modifiable si je choisi le TextBox_Exit...
Ce problème (si si, pour moi, c'en est un alors que je ne l'aurais jamais cru !) est devenu carrément un casse-tête...
Y'a-t-il une solution pour que le bouton Valider prenne le focus après la saisie du dernier contrôle TextBox, sans que celà ne bloque tout ?

J'ai aussi tenté de changer l'ordre des tabulations, de remplacer le Frame par une Image (mais là, j'ai eu d'autres soucis... car je joue avec des si untel contrôle pas rempli ; l'autre invisible... et du coup, en passant de l'un à l'autre, Excel me saute des contrôles (les invisibles qui sont redevenus visibles)...

Enfin bref, j'espère que quelqu'un pourra m'aider ?
 

Pièces jointes

  • Question_01.jpg
    Question_01.jpg
    198.1 KB · Affichages: 17
  • LOREO3_Excel_Download.xlsm
    983 KB · Affichages: 1
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
et ces goto à la pelle c'est quoi?
VB:
If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value = "" Then GoTo 10 Else GoTo 20
   
10  With DemoForm
        .Height = 225
        .Frame1.Height = 105
        .CommandButton1.Top = 144
        .CommandButton2.Top = 144
        .Top = Application.Top + 199
        .ComboBox1.Value = ""
        .ComboBox2.Value = ""
        .ComboBox3.Value = ""
        .TextBox2.Value = ""
        .TextBox3.Value = ""
        '.Label9.Caption = Sheets("Consultation").Range("A1")
        .CommandButton1.SetFocus
        .CommandButton2.Enabled = False
    End With

20 If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value <> "" Then GoTo 30 Else GoTo 40

30  With DemoForm
tu n'y est pas du tout j'ai l'impression d’être retourné 40 ans en arriere et travaill sur du basic.1

c'est comme ca que l'on fait aujourd'hui enVBA
Code:
Private Sub ComboBox1_Click()

select case combobox1.value
case 10
'faire ceci'
case 20
'faire cela'
case 30
'ou bien cecicela'
case else
'si aucune correspond

end select
 
Dernière édition:

Lorenzini

XLDnaute Occasionnel
re
et ces goto à la pelle c'est quoi?
VB:
If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value = "" Then GoTo 10 Else GoTo 20
   
10  With DemoForm
        .Height = 225
        .Frame1.Height = 105
        .CommandButton1.Top = 144
        .CommandButton2.Top = 144
        .Top = Application.Top + 199
        .ComboBox1.Value = ""
        .ComboBox2.Value = ""
        .ComboBox3.Value = ""
        .TextBox2.Value = ""
        .TextBox3.Value = ""
        '.Label9.Caption = Sheets("Consultation").Range("A1")
        .CommandButton1.SetFocus
        .CommandButton2.Enabled = False
    End With

20 If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value <> "" Then GoTo 30 Else GoTo 40

30  With DemoForm
tu n'y est pas du tout j'ai l'impression d’être retourné 30 ans en arriere et travaill sur du basic.1

c'est comme ca que l'on fait aujourd'hui enVBA
Code:
Private Sub ComboBox1_Click()

select case combobox1.value
case 10
'faire ceci'
case 20
'faire cela'
case 30
'ou bien cecicela'
case else
'si aucune correspond

end select
😂🤣 ben oui euh
....
je dois encore apprendre les Case Select... c'est çà non ?
oui, je sais, c'est du vieux...mais bon, çà fonctionne encore 😁
 

Lorenzini

XLDnaute Occasionnel
😂🤣 ben oui euh
....
je dois encore apprendre les Case Select... c'est çà non ?
oui, je sais, c'est du vieux...mais bon, çà fonctionne encore 😁
re
et ces goto à la pelle c'est quoi?
VB:
If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value = "" Then GoTo 10 Else GoTo 20
   
10  With DemoForm
        .Height = 225
        .Frame1.Height = 105
        .CommandButton1.Top = 144
        .CommandButton2.Top = 144
        .Top = Application.Top + 199
        .ComboBox1.Value = ""
        .ComboBox2.Value = ""
        .ComboBox3.Value = ""
        .TextBox2.Value = ""
        .TextBox3.Value = ""
        '.Label9.Caption = Sheets("Consultation").Range("A1")
        .CommandButton1.SetFocus
        .CommandButton2.Enabled = False
    End With

20 If DemoForm.ComboBox1.Value = "" And DemoForm.ComboBox2.Value <> "" Then GoTo 30 Else GoTo 40

30  With DemoForm
tu n'y est pas du tout j'ai l'impression d’être retourné 30 ans en arriere et travaill sur du basic.1

c'est comme ca que l'on fait aujourd'hui enVBA
Code:
Private Sub ComboBox1_Click()

select case combobox1.value
case 10
'faire ceci'
case 20
'faire cela'
case 30
'ou bien cecicela'
case else
'si aucune correspond

end select
oui, voilà, c'est çà que je dois apprendre à utiliser ; je vais m'y coller.
Merci !
 

patricktoulon

XLDnaute Barbatruc
re
j'essai avec beaucoup d'effort de comprendre qu'est ce qui a pu t'aiguiller pour tes codes
on va la faire courte hein comme ça on perdra moins de temps
donc si j'ai bien compris l'intention
tu rempli des textbox et selectionne dans des combos le focus doit aller au controls suivant dans un ordre tres précis
le focus ne peut pas etre pris si le control précédent n'est pas ok

et une fois dument rempli on peu valider et envoyer dans le tableau structuré
on est ok avec ça ?
 

Lorenzini

XLDnaute Occasionnel
re
j'essai avec beaucoup d'effort de comprendre qu'est ce qui a pu t'aiguiller pour tes codes
on va la faire courte hein comme ça on perdra moins de temps
donc si j'ai bien compris l'intention
tu rempli des textbox et selectionne dans des combos le focus doit aller au controls suivant dans un ordre tres précis
le focus ne peut pas etre pris si le control précédent n'est pas ok

et une fois dument rempli on peu valider et envoyer dans le tableau structuré
on est ok avec ça ?
En gros oui.
je nuance/précise : LA condition SINEQUANONE --> 2 ComboBox (1 Transporteur et 1 Fournisseur) DOIVENT être remplis (tous les autres ctrl peuvent être vides) pour que le bouton Valider soit Enable = true.
une fois terminé, le tout est envoyé dans un tableau structuré.
Le focus passe de l'un à l'autre... j'ai pensé à l'idée de DRANREB à 'jouer' avec les Default = True... le focus passe 1 nano seconde sur le bouton Valider et file sur le '+' !! grrrrrrrrrrr !!
J'ai eu une 2ème idée : Sendkeys "{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}" ... 7 x en tout pour que le focus arrive sur le bouton Valider mais mon pavé numérique se désactive avec cette satanée commande !!
Du coup, je planche sur ta solution (j'avais même pensé à remplace la Frame par une image, me disant : est-ce la Frame le problème ?)
(Tu n'as pas une adresse mail où je pourrais t'envoyer le fichier complet (2,70 Mo)... tu comprendrais mieux les idées avec...)
 

patricktoulon

XLDnaute Barbatruc
re
pour être honnête avec toi ,ton fichier n'apportera rien (tout du moins pour l'instant)
je te le dis avec tes userform il faut tout reprendre de zero
demain je te donnerais un exemple avec ton userform demoform tu verra
je bute encore sur le ID en colonne 1 du tableau perso j'aurais fait une suite et formaté la colonne mais bon

on en reparle demain
 

Lorenzini

XLDnaute Occasionnel
re
pour être honnête avec toi ,ton fichier n'apportera rien (tout du moins pour l'instant)
je te le dis avec tes userform il faut tout reprendre de zero
demain je te donnerais un exemple avec ton userform demoform tu verra
je bute encore sur le ID en colonne 1 du tableau perso j'aurais fait une suite et formaté la colonne mais bon

on en reparle demain
ok, Merci de ton attention.
 

Discussions similaires

Réponses
5
Affichages
206
Réponses
8
Affichages
276
Réponses
34
Affichages
2 K

Statistiques des forums

Discussions
313 286
Messages
2 096 822
Membres
106 755
dernier inscrit
riviere gabriel