Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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




allez une petite démo


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
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
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 ,

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
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
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

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