Appel manuel d'une classe

Résolu/Fermé
zapp56 - 1 oct. 2015 à 17:58
 zapp56 - 17 oct. 2015 à 00:02
Bonjour

[VBA excel - 2003]

J'ai créé ma première classe !!! (Applause)
J'ai plein de cheveux en moins, mais le résultat y est !

Bon par contre, je suis confronté à un autre problème.
Pour décrire la situation :

Cette classe me permet de mettre à jour l'ensemble de mon tableau de textboxs à chaque fois que j'en change une. Là-dessus, ça marche !
Cependant, mon tableau dépend également de fonctions extérieures à la simple saisie dans la textbox. Je voudrais donc qu'elle s'exécute quand j'appuie sur un "commandbutton1", pour dire vulgairement.

Cependant, j'ai essayé d'éditer le fameux "commandbutton1" et d'y insérer "TextBoxClass.TBoxEditeur()" mais ça ne semble pas fonctionner.

Un conseil ??? Merci d'avance !

4 réponses

...

Je viens de me rendre compte que mes amis disent vrai : je cherche compliqué pour faire simple.
Copier+coller du contenu de ma classe dans le "CommandButton1_Click()"

Ceci étant dit, ça fait deux fois le même script dans le même projet. C'est indéniable, ça marche mais c'est (développement parlant) pas très beau. Ma question perd donc un peut de son intérêt sur le plan fonctionnel mais elle tient toujours, par curiosité et souci de "pureté".
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
2 oct. 2015 à 08:45
Bonjour,

Sans le code de la classe, difficile de répondre...
Peux tu nous le communiquer?
0
Merci de ta réponse. Mais comme précisé au-dessus, j'ai trouvé une solution B.
Qu'entends-tu par "code de la classe" ?
Mon module de classe s'appelle "TextBoxClass" et contient une "Private Sub TBoxEditeur_Change", où TBoxEditeur est la liste de toutes les textboxs de mon userform.

Après, son contenu, hé bien c'est quelques boucles agrémentées d'opérateurs "isNumeric(...)", des calculs, bref un code comme un autre, quoi...

La question, c'est juste comment faire pour l'appeler quand par exemple j'appuie sur un bouton au lieu de saisir quelque chose...
En gros, je demande comment exécuter "TBoxEditeur_Change" sans changer une seule case de mon tableau...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
5 oct. 2015 à 08:45
Bonjour,

Si je te demande le code de la classe, c'est pour savoir l'événement que tu as choisi pour déclencher les calculs. Ici c'est TextBox_Change().
Si j'ai bien compris, tu as des textbox, "attachés" à ta classe, qui se modifient seuls (grâce à des "fonctions extérieures") et qui donc ne déclenchent pas l'événement Change() lors de ces modifications.
C'est bien cela?
Si oui, tu peux, peut-être, trouver un autre événement des textbox qui lui se déclencherai à coups surs.
Dans le cas contraire, et afin de pousser plus loin mes tests, un fichier exemple serait le bienvenu.
Notamment, nous ne savons pas comment tu "passes" tes textbox à la classe.

0
C'est bien cela. Je vais suivre tes conseils et voir quels événements on peut attribuer à une classe, notamment de textboxs. Je devrais pouvoir trouver ça facilement.

Le code que j'utilise envoie des données d'une base de données Excel à mon userform.
Autrement dit, en vulgarisant :
Workbooks.open "Base de données"
double boucle "for" (lignes et colonnes),
copie la valeur ligne colonne de "Base" et les colle à la value de la ("textbox" & i & j) de mon usf.
Workbooks("Base de données").close sans message sans rien.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
6 oct. 2015 à 08:07
Bonjour,

Puisque je n'aurais pas de fichier, ni le code pour tester ta manière de faire et éventuellement te conseiller, je t'ai fait un exemple.
A chaque clic sur le bouton, la classe est "déclenchée".

https://www.cjoint.com/c/EJggggIfqMV

0
J'ai consulté ton fichier et me suis rendu compte que la réponse était sous mon nez...
Effectivement, (pour ceux qui prenne le topic au vol) le fait que la valeur de ma Textbox soit changée par un évènement ou un module appelle automatiquement l'exécution de ma classe.
C'est la deuxième fois que je te remercie ce soir, pijaku.

Beau boulot, merci pour tes réponses !
0