Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
Icône de la ressource

Collection module classe 2024 patricktoulon (classe controls) gérer Enter/exit TextBox 1.0 1.0

Dudu2

XLDnaute Barbatruc
Pourquoi veux-tu que je regarde la vidéo. C'est le résultat de ton code que je ne connais pas et qui ne fonctionne pas. Passe-moi ton code quelque part et je regarderai.

Je n'ai pas de problème avec mon code.
Tiens, j'ai même qualifié les traces avec le nom du UserForm (sauf pour les Terminate car c'est plus accessible).
 

Pièces jointes

  • Class for UserForm Control Enter and Exit Events - 2 UserForms.xlsm
    93.8 KB · Affichages: 0

Dudu2

XLDnaute Barbatruc
Ah ok. Ce n'est pas lié au fait qu'il y a 2 UserForms.
C'est lié au fait que tu fermes le UserForm vbModeless par le menu system.
Les instances de classe des Controls ne sont pas terminées.

Tu ferais bien d'avoir un .bat avec ça pour éviter de passer par le gestionnaire de tâches.
echo off
REM Kill direct
taskkill /f /im excel.exe
 

patricktoulon

XLDnaute Barbatruc
il faut donc prévoir cela
quelque chose genre dans le queryclose
if closemode=0 then set ControlEnterExit=nothing
voir même sans la condition

on en revient donc a fermer une classe
 

Dudu2

XLDnaute Barbatruc
Ça c'est encore un bug Excel !
Oui alors effectivement il faut soit intercepter le Query_Close et terminer la et les instances en cours.
Ou je vais essayer de le contourner en plaçant le tableau des child en déclaration directe dans le UserForm.
Ou déclarer la classe en table et y placer toute la famille.

Bien vu ! Je ne l'avais pas testé ce cas.
 

patricktoulon

XLDnaute Barbatruc
re
au final dans le queryclose de l'userform
chez toi if closemode=0 then set ControlEnterExit=nothing
chez moi set clas.Allclass=nothing'je m'en fout du test
 

patricktoulon

XLDnaute Barbatruc
au final
si on remonte notre débat sur la fermeture des classes par code a partir du post #11 a peu près
qui là se trouverait bien dans le queryclose
on peu dire que j'avais raison depuis le debut puisque de tout facon dans un contexte ou l'on ferme par le menu system il faut killer par code
afin de ; dans tout les contextes de fonctionnement pouvoir fermer les classes mère et/ou child
 

patricktoulon

XLDnaute Barbatruc
re
Ou je vais essayer de le contourner en plaçant le tableau des child en déclaration directe dans le UserForm.
Ou déclarer la classe en table et y placer toute la famille.
à ben là le problème ne se pose plus puisque là il n'y "a plus besoin de mère
toute les classe qui et"aient child sont membre de l"a collection ou table("array)comme tu veux
ca implique du codage dans le userform + la classe

avec ma méthode ref circulaire je n'ai aucun de ces soucis en fermant clas.AllClass dans le queryclose
que tu a testé d’ailleurs
AllClass qui est une collection dans la classe et donc membre implémenté et accessible dans l'userform
 

Dudu2

XLDnaute Barbatruc
La question n'est pas de savoir qui a raison depuis le début puisque ton Query_Close n'a rien à voir avec le fait que le UserForm est vbModeless. Tu dois faire un Query_Close parce que tes child contiennent la mère.
Moi je suis sur un Query_Close parce que Excel bug sur la fermeture système du UserForm vbModeless et pas sur un Unload.
 

Dudu2

XLDnaute Barbatruc
En mettant la Collection dans le UserForm directement et pas dans la classe mère, c'est pareil !!!
La fermeture système ne ferme pas les instances de la collection !
Car sur la fermeture système il ne voit pas que ce sont des instances de classe dans la collection.
 

Dudu2

XLDnaute Barbatruc
Pour que la fermeture système voit toutes les instances de classe, il faut qu'elles soient déclarées comme telles dans le UserForm. Je vais donc essayer de trouver une autre méthode. Décidément nos sujets sont à rallonge !
 

patricktoulon

XLDnaute Barbatruc
re


Pour que la fermeture système voit toutes les instances de classe, il faut qu'elles soient déclarées comme telles dans le UserForm. Je vais donc essayer de trouver une autre méthode. Décidément nos sujets sont à rallonge !
ben c'est par ce que on va au fond des choses


conclusion :
on revient à la fermeture par code, donné en exemple en post #82
avec mon modèle en tout cas je n'ai pas de soucis
ton classeur avec les fermeture par code
ton fichier modifié plus de soucis
et le mien pareil
 

Pièces jointes

  • Class for UserForm Control Enter and Exit Events - 2 UserForms.xlsm
    67.3 KB · Affichages: 0

Dudu2

XLDnaute Barbatruc
Oui, le Query_Close règle le problème des 2 méthodes qui ont des causes différentes.
Mais je suis têtu et je vais continuer à chercher une solution.
Quand j'aurai fini de monter ma nouvelle trott
 

patricktoulon

XLDnaute Barbatruc
re
ok bonne trott
ben la seule solution serait de coder les instanciations (array ou collection) dans le userform (plus de "init")
parti de là les variables sont connues partout dans le userform
ce n'est pas transportable ou exportable

reste que avec ma méthode ref circulaire( mère membre de la fille) ok les classes ne sont pas fermées en fermant par la croix mais excel ne plante pas puisque mère n'est pas perdu par la variable memoire

comme quoi des fois
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…