XL 2016 VBA - Évènement TextBox_Enter() non géré en module de Classe

Dudu2

XLDnaute Barbatruc
Bonjour,
Alors l'évènement _Enter() n'est pas géré en Classe ? Une solution ?
 

Pièces jointes

  • Test Classe.xlsm
    40.3 KB · Affichages: 5
Dernière édition:

patricktoulon

XLDnaute Barbatruc
public memo as classe1
dim cls2(1 to 10) as new classe1
public propriété

VB:
Dim cls(1 To 10) As New Classe1
Public memoire As Classe1
Public toutlepaquet
Sub test()


Set memoire = New Classe1
'papa dans maman
For i = 1 To 10
    Set cls(i).memoire = memoire
Next
'maman dans papa
memoire.toutlepaquet = cls
End Sub

qui a fait l'oeuf ?
l'oeuf ou la poule? je sais plus moi 😂
 

Dudu2

XLDnaute Barbatruc
Perso j'ai fait ça ...

En Module de Classe MaClasse
VB:
Public ValeurInstance As Variant
Public ValeurCommune As Variant
Public MaClasse1 As MaClasse

Private Sub ProcedureDansMaClasse()
    ...
    'Seule la 1ère instance de la Classe stocke la valeur commune à toutes les instances
    MaClasse1.ValeurCommue = "zzz"
    ...
End Sub

En Module standard ou UserForm
Code:
Sub InstancierMaClasse()
    Static TabMaClasse(1 To 10) As New MaClasse
   
    For i = 1 To 10
        'Toutes les instances de la Classe connaissent la 1ère Instance
        Set TabMaClasse(i).MaClasse1 = TabMaClasse(1)
    Next i
End Sub
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Sais tu que les variables static ne sont visibles que dans la méthode où elles sont déclarés ?
Le fait qu'elle soit Static ou pas et la visibilité sont, me semble-t-il 2 choses différentes.
Et oui, déclarée dans une procédure, le TabMaClasse() n'est visible que dans cette procédure.
Mais la rendre Static assure sa persistance pour la durée d'existence de son hôte. J'aurais pu la déclarer en variable Module ou UserForm.

c'est pas tout a fait la bonne interprétation @Dudu2
Tu veux dire que ce n'est pas TON interprétation.
Pourquoi créer une instance dédiée à une variable ? C'est juste inutile.
 

patricktoulon

XLDnaute Barbatruc
@Dudu2
ben c'est surtout que si tu veux t’emmêler les pinceaux ya pas mieux qu'utiliser une des 10 pour en faire la commune

ceci ci dessous serait plus proche de ma méthode
ET EN PLUS là !! je fais la remontée et la redescente de l'arborescence
autrement dit j'ai n'importe quel élément je peux donc atteindre n'importe quels autres

démonstration
le module classe
Code:
Public lesfilles
Public mère As maclasse
Public nom

le module standard (pour rester dans ta façon de faire)
VB:
Dim filles(1 To 10) As New maclasse
Dim mère As maclasse


'non c'est instancier MES!!! exemplaires de classe
Sub InstancierMaClasse()
    Dim X&

    Set mère = New maclasse    'on instancie la matriarche pour le moment elle est tout seule et c'est la même que les autres

    mère.nom = "Agathe"    ' elle s'appelle "Agathe"


    For i = 1 To 10

        filles(i).nom = "fillette " & i    'on donne un nom aux 10 filles(x)

        Set filles(i).mère = mère    'on affilie la mère aux 10 instances filles

    Next i

    'on affilie  la mère aux tableau des 10 filles(x)
    mère.lesfilles = filles

    'on peut donc maintenant remonter ou descendre  dans l'arborescence de l'affiliation
    'de la mère a toutes les filles ou de une des  filles  à  la mère


    'ok testons pour voir ; on prend une fille au hasard

    X = 3

    MsgBox "la fiiles(" & X & ") de la mèreprénommée  [" & mère.nom & "]  s'appelle " & mère.lesfilles(X).nom

    MsgBox "la mère de la fille(" & X & ") donc [" & filles(X).nom & "] s'appelle " & filles(3).mère.nom


    MsgBox "qui est la fille d'Agathe qui viens après  la fillette 3 " & vbCrLf & _
           "c'est " & filles(3).mère.lesfilles(4).nom


End Sub

voila tu veux demander une des filles en mariage ,tu va voir sa mère 😂😂😂

autrement dit mère est un membre descendant de chaque instances filles
mais les filles sont aussi membre descendant de la mère par l'intermédiaire du tableau lesfilles

comme je disais .... "qui a fait l'oeuf" ça on sait toujours pas hein

diabolo.gif
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
tu veux demander une des filles en mariage ,tu va voir sa mère
Pas grave ! J'ai plus l'âge d'épouser la mère que d'épouser sa fille
1713698749484.gif
.

Si tu veux créer une classe mère et des filles, tu es libre de le faire.
Tu peux aussi créer la grand-mère, l'arrière-grand-mère et les petites filles.
1713699027758.gif

Mais pour garder un élément commun à toutes les classes, ce qui était mon but, pas besoin d'avoir toute une généalogie. Et en plus, tu le sais !
 

patricktoulon

XLDnaute Barbatruc
c'est pas une généalogie c'est une seule en fait
qui peut remplacer un module standard avec des variable public(ce que l'on trouve le plus souvent)

alors utiliser la première (ou la Nème d'ailleurs) nous amène a la notion (public/private)
qui risque d'être ingérable dans certains cas

j'entends par la que des variables private ou public non seulement elle auront le comportement que tu connais déjà mais aussi le fait que dans certains cas le public ne marchera pas

tu a besoins de 10 instances pour 10 boutons/textbox/ou autres crée 11 instances
tes instances boutons ou autres ne seront pas polluées par des property et ou membres dont elle se cognent

ps :maintenant que j'ai fini avec ma méthode ,je viens de tester et retourner dans tout les sens le modèle de pijaku(proposé par @fanch55)avec la shwapi.dll et en effet c'est bluffant pas trop compliqué à comprendre c'est similaire a du hooking
 

fanch55

XLDnaute Barbatruc
ps :maintenant que j'ai fini avec ma méthode ,je viens de tester et retourner dans tout les sens le modèle de pijaku(proposé par @fanch55)avec la shwapi.dll et en effet c'est bluffant pas trop compliqué à comprendre c'est similaire a du hooking
Après différents tests avec le modèle cité, j'ai quand même des exits non pris en compte quand je change de page dans le multi-page .... 🙄
 

patricktoulon

XLDnaute Barbatruc
re
@fanch55
et oui c'est normal
les controls Listbox,combobox,listview,multipage sont des fenêtre a part entière
elles ont donc un handle et un windowlong

lors du classement dans le MesTxtBtu classe le multipage avec une page active donc avec un getwindowlong qui te donnera un long correspondant à ses paramètres

même si le howner reste le multipage comme tu change le getwindowlong du multipage en changeant de page , le IID_IDispatch sera incohérent et le ppcpOutt sera pour le coup vraiment OUT 😂

alors pourquoi ça marche un peu (ou des fois)tu me diras ?
tout simplement par ce que les autres controls n'ont pas de handle si tu teste avec getwindowEx tu verra ils ont tous le même

alors attention quand vous allez éventuellement le modifier pour vos besoins !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
le vbattribute va sauter , il vous faudra l'exporter/bloknote/inscription de l'"attribut/enregistrer réimporter d"ans le projet
 

Discussions similaires

Réponses
6
Affichages
479
Réponses
29
Affichages
2 K

Statistiques des forums

Discussions
315 126
Messages
2 116 491
Membres
112 763
dernier inscrit
issam2020