XL 2019 Module de classe - Texbox AfterUpdate event

vgendron

XLDnaute Barbatruc
Bonjour à tous,

Je vous soumets mon souci
j'ai un formulaire sur lequel j'ai dessiné une frame qui contient 2 textbox que j'ai nommés Tbx_Source1 et Tbx_Dest1
Dans le code du userform, j'ai ajouté le "tbx_Source1_afterupdate" qui provoque le remplissage du Tbx_Dest1
jusque la. tout va bien

Maintenant, j'ai aussi un bouton qui me permet de dupliquer la frame avec ses deux boutons, et qui les renomme Tbx_Source2 etTbx_Dest2
je peux donc ajouter autant de frames que de clics bouton.

je me retrouve donc avec un formulaire contenant les Tbx_Source1 2 3 4...X et les Tbx_Dest 1 2 3 4 ...X
mais en l'état.. un changement de valeur dans les textbox Tbx_Source 2 3 4..X ne provoque pas la mise à jour des Tbx_Dest..
normal puisque il manque les codes pour les Tbx_Source...._afterupdate

Il me semble qu'une solution, c'est de passer par un module de classe dans lequel je devrais définir les évènements

mais alors la.. je sèche. apparemment, l'évènment _afterupdate n'est pas dispo dans une classe pour un textbox
j'ai vu un peu de tout: le keypress up / down ==> la touche entrée ne le déclenche pas
lostfocus / getfocus...?
raiseevent... pour lancer une macro qui fait le boulot du "afterupdate"..???

je m'y perds et à force de tester dans tous les sens un peu de tout, je vois que je ne maitrise pas du tout la mécanique...
quelqu'un saurait il m'aiguiller ?

en PJ le fichier sur lequel j'essaie de me former..


Merci
 

Pièces jointes

  • Module Classe AfterUpdate Event.xlsm
    35.4 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Bonsoir.
C'est un problème récurrent et sans solution. Ce sont des évènements d'objets Control et non de contrôles spécifiques dont ils sont les supports, et il n'y a pas moyen d'utiliser un WithEvents X As Control parce que son code ne les gère pas, seul un UserForm peut les décréter. Ça touche tout ce qui a rapport de près ou de loin avec le focus.
 

vgendron

XLDnaute Barbatruc
Effectivement @ChTi160
ca fonctionne bien.. merci !
j'avais pourtant fait des essais aussi avec le change...mais ca ne marchait pas comme voulu.. .je ne sais plus pourquoi;. à force ; j'ai du mixer des choses qu'il ne fallait pas..
bon bah au moins. avec ta solution, je vais pouvoir repartir sur une base saine. quand mes neurones seront retombés en pression..
tiens;. à propos de pression..va falloir penser à l'apéro du soir !! ;)

Merci
 

ChTi160

XLDnaute Barbatruc
re
je ne sais pas mais souvent il m'arrive que dans le Fichier que j'ai téléchargé il me faille changer des Controls ex ListBox Listview ,TextBox pour qu'ils fonctionnent correctement !

Pourquoi je n'en sais rien Lol
ce qui compte c'est que chez toi ca fonctionne avec les miens lol
Jean marie
 

patricktoulon

XLDnaute Barbatruc
re
je ne sais pas mais souvent il m'arrive que dans le Fichier que j'ai téléchargé il me faille changer des Controls ex ListBox Listview ,TextBox pour qu'ils fonctionnent correctement !

Pourquoi je n'en sais rien Lol
ce qui compte c'est que chez toi ca fonctionne avec les miens lol
Jean marie
Bonjour
juste en passant
la listview c'est presque normal je dirais c'est toujours un soucis avec le MSCOMCTL.OCX et différent des versions 32/64 et même entre versions excel
parfois il y est dans le syswow64 et system 32 mais pas enregistré (regsvr32)

pour les textbox en effet j'ai eu quelques echos depuis le version 2021
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Je ne poste plus ici mais je fais une exception sur ce sujet qui m'intéresse.
Il ne semble pas forcément nécessaire de placer le code dans un Module de Classe.
Le UserForm est me semble-t-il aussi une Classe dont on peut dévier l'utilisation pour un WithEvents.
Même si ce n'est pas très orthodoxe ! Enfin, je ne suis pas un expert en religion.

Edit: juste une petite précision d'utilisation: dans les fonctions évènements liées au WithEvents (en l'occurrence Private Sub Tbx_Source_Change()), il faut qualifier les Controls autres que celui concerné par l'évènement avec le nom du UserForm (Ex: UserForm1.Tbx_Dest1). La qualification implicite ou explicite par Me ne fonctionne pas.
 

Pièces jointes

  • Module Classe AfterUpdate Event.xlsm
    34.3 KB · Affichages: 7
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour à tous
juste en passant avant de partir


Edit: juste une petite précision d'utilisation: dans les fonctions évènements liées au WithEvents (en l'occurrence Private Sub Tbx_Source_Change()), il faut qualifier les Controls autres que celui concerné par l'évènement avec le nom du UserForm (Ex: UserForm1.Tbx_Dest1). La qualification implicite ou explicite par Me ne fonctionne pas.
bonjour @Dudu2 et non pas besoins si les textbox sont jumelés
ils le sont sont jumellés dans leur propre instance de classe

exemple
set classe(i).tbx1=textbox1
set classe(i).tbx2=textbox2
tbx2 étant juste pour un calcul dans l'event du tbx1 on le dim en object et non en msforms.textbox
sauf si bien évidement on veut gérer un de ses events

@vgendron j'ai nettoyé ton code et en classant à l’intérieur du userform
j'aurais pas fait comme ça mais j'ai gardé certaines parties de ton code intègre pour suivre ton propre raisonnement

j'ai ajouté aussi la scrollbars vertical automatique du userform si le bottom de la dernière frame dépasse le bas du userform

alors le raisonnement diffère que très légèrement
en fait je copie toujours la première frame (je ne suis pas obligé de me servir de lastframe pour trouver la dernière du coup la fonction lastframe est supprimée la derniere ajouté sera toujours "Frame1"
pour le positionnement c'est simple
c'est postop+(80 fois (nbenfants-1)
 

Pièces jointes

  • exemple Add frame textbox jumellés classé intra userform.xlsm
    26.3 KB · Affichages: 10

Discussions similaires

Réponses
29
Affichages
2 K

Statistiques des forums

Discussions
315 093
Messages
2 116 122
Membres
112 666
dernier inscrit
Coco0505