XL 2010 [RESOLU]Adapter Module de Classe

cp4

XLDnaute Barbatruc
Bonjour,

Je m'initie aux modules de Classe. Merci pour votre aide.
VB:
'Module de classe ClsBtn'
Option Explicit

Public WithEvents MESBOUTONS As msforms.CommandButton

Private Sub MESBOUTONS_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   For Each Ctrl In UsFNavigation.Controls
      Ctrl.BackColor = &H8000000F
      Ctrl.ForeColor = &H80000012
   Next
   MESBOUTONS.BackColor = vbGreen
   MESBOUTONS.ForeColor = vbWhite
End Sub

Dans Module UserForm
Code:
Option Explicit
Private BTN(1 To 4) As New ClsBtn 'nombre de boutons "4"

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 4
   Set BTN(i).MESBOUTONS = Me("menu" & i)
Next i

End Sub

Je voudrai remplacer la boucle For i par une boucle For each Ctrl
(sachant que mes boutons commencent tous pas Cb).
Je suis un peu perdu. En vous remerciant.

Bon week-end.
 

Pièces jointes

  • Class CommandButton.xlsm
    18.7 KB · Affichages: 9
Dernière édition:

cp4

XLDnaute Barbatruc
re
non le switch c'est au click pas au mouve
tu click il devient vert tu sort il reste vert tant que tu clique pas sur un autre
c'est ça le switch

re non le vieux code a des erreurs monumentales
ratiow et ratioh en string par exemple
et le font size ne va pas a tout
les liste box quand on agrandi y compris le font le columnwidths ne correspond plus
si c'est moi qui te l'ai donné comme ça je devais être très fatigué 🤣
test celui là
dans les userform tu "a des boutons vers les "autres userform
ballade toi d'userform en userform
il faut bien sur que l'application soit maximisée

garde celle ci va c'est mieux 🤣
En débutant que je suis, je suis entrain de suivre ta vidéo pour trouver où se trouver l'erreur (qui n'existe pas😱).
Comme je lis très souvent de travers. Je n'avais pas compris que c'était au click.
Merci de m'avoir éclairé.

Je confirme, le code est le tien parce que je note l'auteur.

Merci beaucoup. Bonne soirée.
 

patricktoulon

XLDnaute Barbatruc
re
quand tu a des boutons qui sont dans des frame ou multipage ou userform
ca se passe comme ca

1711894326047.png



allez une petite démo
demo.gif


et pour te prouver que si tu fait les choses proprement
ca marche impec
je met ma sub de resize dans ce projet

donc
non seulement tu a le mouse mouve / le switch/ le click
mais tu a le plein écran aussi (à condition que excel soit maximisé

voilà quand tu aura digéré ça je te revoie pas avant 6 mois 🤣 🤣 🤣

tu veux apprendre , je vais t'en donner moi 🤣🤣🤣
 

Pièces jointes

  • Class CommandButton v3 by patricktoulon .xlsm
    49.5 KB · Affichages: 15

cp4

XLDnaute Barbatruc
re
quand tu a des boutons qui sont dans des frame ou multipage ou userform
ca se passe comme ca
Regarde la pièce jointe 1193939


allez une petite démo
Regarde la pièce jointe 1193940

et pour te prouver que si tu fait les choses proprement
ca marche impec
je met ma sub de resize dans ce projet

donc
non seulement tu a le mouse mouve / le switch/ le click
mais tu a le plein écran aussi (à condition que excel soit maximisé

voilà quand tu aura digéré ça je te revoie pas avant 6 mois 🤣 🤣 🤣

tu veux apprendre , je vais t'en donner moi 🤣🤣🤣
Je t'avoue que je ne trouve pas les mots pour te remercier.
Comme je veux apprendre (à mon rythme) et aider. Je ne peux pas te promettre de ne roder sur XLD durant six mois 😭🤣
Merci beaucoup pour ta générosité.

Bonne soirée.
 

patricktoulon

XLDnaute Barbatruc
re
ben il n'y a pas de quoi
c'est vrai que je pourrais en faire une source dans ma collection module classe
j'hésite comme c'est quasiment du gadjet

mais là tu n'en est qu'au balbutiement
si tu savais ce que l'on peut faire avec tu serais surpris
perso je fait des pseudos rubans auto hide dans mes userforms et plein de trucs comme ça
 

cp4

XLDnaute Barbatruc
re
ben il n'y a pas de quoi
c'est vrai que je pourrais en faire une source dans ma collection module classe
j'hésite comme c'est quasiment du gadjet

mais là tu n'en est qu'au balbutiement
si tu savais ce que l'on peut faire avec tu serais surpris
perso je fait des pseudos rubans auto hide dans mes userforms et plein de trucs comme ça
Je n'en doute pas que l'on puisse faire beaucoup de choses.
J'ai aussi visionné une vidéo, où le type expliquait comme copier des données dans un tableau structuré depuis une formulaire sur une autre feuille, en utilisant un module de classe. Il aussi dit que l'on pouvait modifier ou supprimer des lignes du tableau mais expliquer comment faire ces 2 opérations.
Étant nul en module de classe, pour le moment je vois pas comment.

Je t'ai assez embêté aujourd'hui, en terminant par mon dernier mp.
Encore merci.

Excellente soirée.
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour @cp4
t'en veux encore
tiens je t'ai fait un autre exemple
ça concerne cette fois ci les control jumelé et c'est des textbox
tu rempli le prix le taux de tva et tu laisse faire le reste
 

Pièces jointes

  • exemple classe textbox jumelés.xlsm
    23.5 KB · Affichages: 9

cp4

XLDnaute Barbatruc
re
Bonjour @cp4
t'en veux encore
tiens je t'ai fait un autre exemple
ça concerne cette fois ci les control jumelé et c'est des textbox
tu rempli le prix le taux de tva et tu laisse faire le reste
Bonjour @patricktoulon ;):cool:,

Je t'avoue que je n'ai encore essayé de coder seul (comme un grand garçon).
Histoire de voir si j'ai bien assimilé ce que tu m'as déjà envoyé.
Merci beaucoup.

Si tu permets, j'ai lu dans une discussion (je n'ai pas pris note) ton astuce pour éviter le déclenchement du code présent dans les différents contrôles, sans utiliser une variable booléenne.
Stp, pourrais-tu partager avec nous ton astuce.

En te remerciant infiniment.

Excellente journée.
 

patricktoulon

XLDnaute Barbatruc
re Bonjour @cp4
oui le truc est simple
je suppose que tu parle d'un event eventuellement exécuté involontairement
dans l'event au debut
exemple
VB:
Private Sub ComboBox1_Change()
If ActiveControl.Name <> "Combobox1" Then Exit Sub
'..
'reste du code
End Sub

Private Sub TextBox1_Change()
If ActiveControl.Name <> "TextBox1" Then Exit Sub
'..
'reste du code
End Sub

maintenant si c'est dans la classe tu utilisera

combo et TxtB ce sont les events que tu a instancié
et Usf c'est le userform que tu a instancié jumelé dans dans le cl(x).Usf

Code:
Private Sub Combo_Change()
If Usf.ActiveControl.Name <> Combo.name Then Exit Sub
'..
'reste du code
End Sub


Private Sub TxtB_Change()
If Usf.ActiveControl.Name <> TxtB.name Then Exit Sub
'..
'reste du code
End Sub

est ce que c'est clair
 
Dernière édition:

cp4

XLDnaute Barbatruc
re Bonjour @cp4
oui le truc est simple
dans l'event au debut
exemple
VB:
Private Sub ComboBox1_Change()
If ActiveControl.Name <> "Combobox1" Then Exit Sub
'..
'reste du code
End Sub

Private Sub TextBox1_Change()
If ActiveControl.Name <> "TextBox1" Then Exit Sub
'..
'reste du code
End Sub

maintenant si c'est dans la classe tu utilisera

combo et TxtB ce sont les events que tu a instancié

Code:
Private Sub Combo_Change()
If Usf.ActiveControl.Name <> "Combobox1" Then Exit Sub
'..
'reste du code
End Sub


Private Sub TxtB_Change()
If Usf.ActiveControl.Name <> "TextBox1" Then Exit Sub
'..
'reste du code
End Sub

est ce que c'est clair
Plus limpide que ça, je ne sais pas où je trouverai. C'est parfait.

Encore merci, avec ma gratitude.
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir @cp4


dim cl as Classejumeau = déclaration, cl est un object de type classe jumeau mais est nothing à ce stade



dim cls() as new classejumeau = déclaration d'un tableau non dimensionné de classe donc vide à ce stade




dim cls as new classejumeau =déclaration et instanciation d'une instance de classe



En sorte, tout ce passe dans la classe.
oui c'est une facon perso de faire
a l'image de mes userforms comme le calendar ou autre dialogue perso patricktoulon que tu trouvera sur divers sites

tu en a besoins tu le glisse dans ton projet et tu adapte ;)
 
Dernière édition:

cp4

XLDnaute Barbatruc
re
bonsoir @cp4


dim cl as Classejumeau = déclaration, cl est un object de type classe jumeau mais est nothing à ce stade



dim cls() as new classejumeau = déclaration d'un tableau non dimensionné de classe donc vide à ce stade




dim cls as new classejumeau =déclaration et instanciation d'une instance de classe




oui c'est une facon perso de faire
a l'image de mes userforms comme le calendar ou autre dialogue perso patricktoulon que tu trouvera sur divers sites

tu en a besoins tu le glisse dans ton projet et tu adapte ;)
Bonjour @patricktoulon :);),

C’est plus clair, déclaration et instanciation.
En tout cas je te remercie beaucoup pour tout ce que tu fais sur XLD et pour nous.

Bonne journée.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83