C'est la lutte des classes

Bonjour,

Je dois avoir un petit coup de pompe ça fait plus d'une heure que je triture ma classe pourtant rudimentaire : Ya quelque chose qui m'échappe.

Quelqu'un peut-il me corriger ?

28testclass.xlsm (29.25 Ko)

A+

Salut galopin01

Belle erreur de débutant

Set Btns(k).Btn = usfSaisie.Controls("cBtn" & k)

et non

Set Btns(k).Btn = usfSaisie.Controls("cBtn" & i)

@+

Pfff...

A+

T'inquiètes un mars et ça repart

bonjour,

simplifie ta classe!

Option Explicit

Public WithEvents Btn As MSForms.CommandButton
Public WithEvents Txt As MSForms.TextBox
Private Sub Btn_Click()
   Txt = Btn.Caption
End Sub
Option Explicit
Dim Btns(1 To 22) As New cCmdBtn

Sub ShowUsfSaisie(Optional i& = 1)
 Dim k%
With usfSaisie
    For k = 1 To 22
     Set Btns(k).Btn = .Controls("cBtn" & k)
    Set Btns(k).Txt = .tb10
    Next
    .Tag = i
    .Show
End With
End Sub

Bonjour

Malheureusement si j'utilise les modules de classe d'une manière triviale, c'est que je manque un peu de bases. Je me contente donc de quelques routines simples qui suffisent largement à mon quotidien désormais tout aussi restreint que mes connaissances...

Des classes je ne connais que la présentation de P. Fauconnier qui s'est hélas arrêté en chemin et celle de Tissot malheureusement un peu plus absconse pour mon petit cerveau de retraité...

Mais je note la manière même si j'ai un peu de mal à conceptualiser la méthode. Il me faudra surement une longue digestion pour intégrer ça à mon raisonnement !

Merci.

A+

Bonsoir …

Pourquoi faire simple quand on peut faire compliqué ?

En tout est pour tout (en dehors du programme de lancement du formulaire qui peut se contenter d’une seule ligne de programmation)

Code du formulaire avec 22 boutons nommés C1, C2 … C22 :

Dim k As Byte, Bt(22) As New Bt
Private Sub UserForm_Activate()
    For k = 1 To 22: Set Bt(k).Bt = Me("c" & k): Next
End Sub

Code du Module de classe nommé BT (gardé pour l’eemlple) :

Public WithEvents Bt As MSForms.CommandButton
Private Sub Bt_Click() 
    ‘pour un texte ne se limitant pas à une lettre
    usfSaisie.tb10 = usfSaisie.tb10 & Bt.Caption 
End Sub

Nota : je ne suis pas un gourou qui veut imposer ses règles, ses façons de faire.

Heureusement tu n’utilises encore que certaines de mes propositions faites au siècle dernier et totalement nouvelles quand tu débutais, dans un autre site .

Dans ce domaine, je n’utilise plus les normes imposées en ces temps-là, beaucoup étant devenues obsolètes car mal réfléchies.

Bonjour,

Merci pour cette apport également.

A+

Bonjour,

C'est exactement ce que j'avais proposé à l'exception que je fournissais également bt10 a la classe !

Option Explicit

Public WithEvents Btn As MSForms.CommandButton
Public WithEvents Txt As MSForms.TextBox
Private Sub Btn_Click()
   Txt = Btn.Caption
End Sub

Bonsoir Messieurs,

Oserais-je profiter de ce regroupement de spécialistes du module de classe pour vous demander des liens vers des ressources abordables ?

J'aimerais mieux comprendre l'utilité et l'utilisation de tout ceci.

Par avance merci à vous.

Rechercher des sujets similaires à "lutte classes"