USF non modal : simuler clic-gauche pour sélectionner un TextBox

JNP

XLDnaute Barbatruc
Bonjour à tous :),
Avec David84, on se prends la tête sur des événementielles croisées dans un USF.
Le problème se pose sur l'évènement Exit. Même avec Cancel = True, l'USF étant non modal, le SetFocus ne permet pas d'avoir le curseur dans le TextBox.
SelStart ne le permet pas non plus...
On est bien passé par par SendKeys pour simuler une tabulation et une Maj-Tab afin de se retrouver dans le TextBox, mais... évidemment, ça déclenche les événement du TextBox suivant :mad:...
Du fait, une hypothèse de travail serait de simuler le clic au dessus du TextBox pour y entrer :p...
Mais sur le forum comme sur le net, je n'ai pas trouver grand chose (à part peut-être un Handle, mais comme il y a appel d'une DLL 32 sous mon VBA 64, ça ne le fait pas...).
Merci à vous pour toute idée qui vous viendrait :D.
Euh, pas de fichier test, mais c'est toujours dans le fichier de ce fil.
Bon dimanche à tous :cool:
 

MJ13

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Bonjour Jean-Noël, Kjin

Avec David84, on se prends la tête sur des événementielles croisées dans un USF.

Comme cela, je ne saurais pas te répondre, mais c'est sur que quand on commence à faire des choses compliquées avec les USF, on a plus de risque d'avoir de bugs, voire des plantages.

Sinon est-ce obligé d'avoir 2 USF en non modale. En général, j'en ai qu'un à la fois, quoique j'ai déjà eu ce problème et généralement, si je ne veux pas avoir à intrevenir sur la feuille, je met mon USF en modale 1 ou je ne met rien, il me semble.

Après tu peux jouer sur le hide.

Ex:
Code:
Show USF_MonUSF

N'oublie pas aussi les objets :).
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Bonjour à tous, JNP:), MJ13:),kjin:)
J'ai suivi le lien que tu indiques, à la 5e page j'ai jeté l'éponge...
Tu as raison kjin;)...
afin de vous permettre d'étudier notre demande, ci-joint un fichier exemple.
Les explications sont à l'intérieur. Si vous avez besoin de plus de précisions, n'hésitez-pas bien entendu.
Merci à tous.
 

Pièces jointes

  • BD_JNP_DO_TestEvénementiels.xlsm
    128.6 KB · Affichages: 155

JNP

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re :),
J'ai suivi le lien que tu indiques, à la 5e page j'ai jeté l'éponge...
Désolé, j'indiquais le fil pour prendre le dernier fichier en date, pas pour tout relire :eek:...
MJ13 à dit:
Sinon est-ce obligé d'avoir 2 USF en non modale. En général, j'en ai qu'un à la fois, quoique j'ai déjà eu ce problème et généralement, si je ne veux pas avoir à intrevenir sur la feuille, je met mon USF en modale 1 ou je ne met rien, il me semble
Oui, c'est ce qu'on souhaiterait :). On a déjà fait pas mal de tests... La question est vraiment comment simuler un clic en VBA, on peux facilement avoir le X et le Y où cliquer, mais comment faire cliquer VBA :rolleyes: ?
Bonne soirée :cool:
 

JNP

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re :),
Le fichier n'est pas exploitable hors 2007 (trop de bug, j'ai laissé tombé), mais je ne comprends pas la question
Code:
Textbox1_Click
simule bien le click dans le Textbox1, non ?
Effectivement, l'utilisation de la gestion des tableaux 2007/2010 est incompatible avec 2003 :eek:.
Par contre, non, TextBox1_Click ne simule pas un clic, il réagit lors d'un clic, où alors, tu penses à quelque chose que je ne connais pas et qui est ce que je cherche :rolleyes:...
Pour essayer d'être plus clair, ce que je cherche, c'est une instruction VBA du style
Code:
Mouse.Click(X, Y)
qui simulerait un clic de souris en position X et Y (si possible en relatif par rapportà la surface de l'USF, mais si c'est de l'absolu, on tiendra compte de la position de l'USF :D).
Bonne soirée :cool:
 

MJ13

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re, Bonjour David

Alors la, bravo, belle usine à gaz :eek:.

Désolé, mais cela me paraît difficile de vous aider, vu qu'il me faudrait dèjà 1 journée pour comprendre toutes les imbrications du programme :eek:.

Dans votre cas, David et Jean-Noël, le mieux serait de faire un fichier tout simple avec juste le problème, sans tous ces contrôles ensuite, ce serait plus facile pour aider.

Sinon, j'ai déjà fait ce que vous avez fait mais en plus simple (type gestion de fournisseurs), mais la, je passe par des modules de classes et c'est dèjà pas simple :confused:.

Par exemple, quand je veux créer un nouveau fourniseur, je fais un USF simple puis, les données viennent se mettre dans la base de données, ensuite grâce au module de classe, je peux modifier directement dans l'USF qui se répercutent dans la feuille base de données.

Il y a peu j'avais fait un programme en ce sens pour Michou9.

https://www.excel-downloads.com/threads/aide-pour-finaliser-et-modifier-ma-petite-macro.150591/

Mais il y avait aussi d'autres comme Si... qui avait fait un programme avec ds listviews (autres possibilités, mais la c'est pas mon fort :eek:).

Je vais le chercher.

Bon courage ;).
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re :),
Effectivement Michel, tu as bien raison ;).
Voici un exemple le plus dépouillé possible.
Tu lance l'USF et tu tapes du texte quelconque (sauf toto :p).
Après la MsgBox, le curseur n'est plus dans le TextBox1 :eek:.
Voilà notre problème, sachant qu'on ne souhaites pas simuler une tab et un maj+tab car cela déclencherait le Enter de la textbox2 :rolleyes:.
Merci d'avance :cool:
 

Pièces jointes

  • Test modal exit.xls
    40 KB · Affichages: 106

MJ13

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re

Voici un test, comment je verrai la chose, mais je dois avoir faux, vu que je ne comprend pas bien la finalité :p.

Ah oui, double click dans une cellule.
 

Pièces jointes

  • Test_modal_exit_test.xls
    36.5 KB · Affichages: 87

david84

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re Michel:)
Quand tu tapes titi dans la textbox1, le message "vous devez taper Toto" apparaît.
Le but recherché est que lorsque tu fermes ce message, le curseur doit être actif et placé à la suite de titi toujours dans la textbox1 (alors que dans l'exemple fourni, tu dois recliquer dans la textbox1 pour continuer ou modifier la saisie) et ce sans déclencher le message placé dans le textbox2 ("Raté"), d'où les précisions de JNP
Après la MsgBox, le curseur n'est plus dans le TextBox1 .
...sachant qu'on ne souhaites pas simuler une tab et un maj+tab car cela déclencherait le Enter de la textbox2
.
Espérant t'avoir un peu éclairé:rolleyes:.
A+
 

MJ13

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re

Quand tu tapes titi dans la textbox1, le message "vous devez taper Toto" apparaît.

Je vous l'avais dit que j'avais rien compris.

Je me demande quand même si vous ne vous prenez pas un peu trop la tête :confused:.

Allez, refaite toute l'apli en partant de zéro et surtout "pensez" avant de programmer :p.

Bonne soirée :).
 

Si...

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

slaut

à tester
Code:
Option Explicit
Dim Si As Boolean 'pour éviter de voir le message une seconde fois
Private Sub UserForm_Activate()
  TextBox1.SetFocus
  Si = True
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Si = False Then Exit Sub
  If TextBox1 <> "toto" Then
    Si = False
    Unload Me
    MsgBox "Vous devez taper toto", vbCritical, "Mais non"
    UserForm1.Show
  End If
End Sub
Private Sub TextBox2_Enter()
  MsgBox "Si...tu veux une suite", vbExclamation, "Bien vu !"
End Sub
 

kjin

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Bonjour za tous,
JNP, je comprends mieux avec l'explication de David :p:D
Bah en non modal je crains qu'il ne faille sortir l'artillerie lourde, en tous cas je ne vois pas d'autre solution
Dans celle que je joins, qui fonctionne chez moi je précise donc sans garantie avec d'autres versions, on récupère la position du curseur dans un tableau de valeur (x et y) à chaque entrée d'un caractere dans la textbox1 (je ne suis pas sûr que se soit la bonne méthode d'ailleurs); après l'affichage de la msgbox, on le repositionne au même endroit et on simule un click de souris.
A+
kjin
 

Pièces jointes

  • Click.xls
    39 KB · Affichages: 116
  • Click.xls
    39 KB · Affichages: 124
  • Click.xls
    39 KB · Affichages: 121

JNP

XLDnaute Barbatruc
Re : USF non modal : simuler clic-gauche pour sélectionner un TextBox

Re :),
Bon, il va falloir que je fasse des efforts quand je pose une question, mais j'ai plus l'habitude de répondre que de poser des questions :p.
Bon, comme c'est de la DLL32, ça ne marche pas sur VBA64, mais David va pouvoir tester et te dire ce qu'il en est ;).
TotoTiti m'a filé un lien qu'il faut que j'explore sur comment adapter du DLL32 vers du 64, je vous tiendrai au courant, mais il me faut du temps pour l'ingurgiter :D.
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 688
Membres
103 638
dernier inscrit
Pascal29