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

XL 2016 Long code dans userform vers un module

Sirberthoult

XLDnaute Occasionnel
Bonjour le forum,

j'ai une question pratico-pratique très bête...mais je ne trouve pas la réponse ...

je dois gérer 32 option buttons d'une certaine facon dans un userform et cela me procure du code ultra long...( surement écrit de façon peu optimal et condensé...mais fonctionnel donc je m'en contente...)
je pensais le mettre dans un module pour éviter de scroller lors de l’écriture de mon projet sur lequel il reste du boulot, et y faire appel ...je lui donne un nom de Sub optionbutton ( ) dans un module et je remplace dans le code de l'userform mon long code par " optionbutton"...

sauf qu'il bug à l'appel de la sub car dans le contenu il y à un Me.combobox1=x, et des références qu'il ne trouve plus car il n'est plus dans l'userform...
bref peut être faut il déclarer public le module ou un truc mais je ne sais pas comment faire exactement ou faire autre chose...
je ne maîtrise pas bien l'environnement vba ...j'arrive a écrire une peu de code et le modifier mais j'ai des lacunes...

merci pour toutes reponses
 

Sirberthoult

XLDnaute Occasionnel
je viens d'explorer ton lien... et je ne pense pas que ce soit un module de classe qu'il me faut utiliser...ou alors je comprend pas bien....

en gros je veux juste faire appel à du code depuis un module a partir d'un formulaire... mais ça bug quand ca fait référence a des éléments du formulaire ...
 

patricktoulon

XLDnaute Barbatruc
Bonjour
32 optionbutton, je suppose donc que l'action a faire est très similaire
et pour peu qu'il soit du même groupe un seul suffit puisque quand tu coche l'un le précédent coché est décoché
il est donc pour moi inutile d'aller chercher midi 14 heures
une simple macro avec une boucle sur tes optionbuttons et faire une action selon celui qui est coché
si c’était des checkbox se serait différent

alors oui pour l'event change ou click (ou autre) de tes optionbuttons en effet ca t'oblige a avoir 32 event click(ou autres)
mais en fait non tu peux très bien classer tes optionbutton dans le userform et n'avoir qu'un seul event a gérer renvoyant sur ta macro(ou fonction dans un module)

un exemple simplissime
dans cet userform tu a 5 optionbuttons
je les subclasse intra userform et j'utilise un event unique
dans cet event unique j'appelle une macro dans un module(avec argument)
argument1 =loptionbutton clické
argument2 l'userform parent

dans la macro du module j'écris quel optionbutton est clické dans le textbox("vue") dans le userform
 

Pièces jointes

  • exemple simple de subclassing intra userform des optionbutton.xlsm
    21.1 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
re
Bonjour @Staple1600
en même temps si il veut réduire ses codes et généraliser une sub ,ben il a pas le choix il devra apprendre
l'exemple donné est très simple
si il est vraiment intéressé , il posera des questions aux quelles j'y repondrais avec un discours à porté de débutant
 

Staple1600

XLDnaute Barbatruc
Re

@patricktoulon
La première chose à faire, si je peux me permettre, serait de relire la charte du forum
(je parle du demandeur)
Pour s'apercevoir que joindre un fichier exemple dès le premier message permettrait aux répondeurs d'attaquer directement dans le dur
Si je me permettais encore, avant de titiller le VBA, appréhender l'utilisation des fonctionnalités et formules natives d'Excel serait moins "douloureux" (*)
(je parle toujours du demandeur)

(*) C'est les 32 OptionButton qui me font écrire cela.
 

Sirberthoult

XLDnaute Occasionnel
re bonjour le forum

mea culpa... c'est pas des optionbutton...mais des checkbox...desolé dans ma précipitation j'ai fourché...
donc 32 checkbox qui varie selon 8 horaires différents et selon 2 à 4 services de soins ...c'est long ( et surement mal écrit...mais je suis novice)

je vous joint mon fichier pour mieux comprendre...

il faut appuyer sur le rond bleu du premier feuillet pour demarer
et generer des étiquettes.
puis remplir le formulaire avec une nouvelle identité ou choisir une existante .
arrivé au nombre de biberons cela fait varier les checkboxs...en fonction du service.
bref le code fonctionne, mais pollu mon code d'userform ... donc je voulais le transferer dans un module et y faire appel.

le long code est dans Sub Nombre de biberons_change()

ps : rien a voir, mais j'ai un bug lorsque l'on choisi le premier nom de la liste filtré dans chaque service...exemple FAUVERGUE en Pédiatrie.
 

Pièces jointes

  • les eti en neo 2 avec Bruno jumeau.xls
    874 KB · Affichages: 7

patricktoulon

XLDnaute Barbatruc
re
@Staple1600 je te l'accorde très souvent les débutants ont tendance a mettre un paquet de controls pour faire une action similaire avec une nuance

et oui c'est vrai on devrait commencer par ça
après je ne vais pas critiquer une méthode d'apprentissage ou une autre

moi je suis sorti de VB6 et VBSCRIPT pour arriver en vba et j'ai commencé d’abords par les apis apres les macros , les fonctions, les classes ,les fonctions natives excel en dernier

alors je ne suis pas le mieux placé pour dire faire avant ceci ou cela
 

Staple1600

XLDnaute Barbatruc
Re,

@Sirberthoult
Merci pour l'ajout du fichier exemple
Que j'ai ouvert
Si j'étais moi, je crois que j'envisagerai de tester une solution Publipostage Word+Excel pour générer les étiquettes.
Ton userfom2 (à mon sens) est peu ergonomique
Je cède mon tour pour cette fois-ci

@patricktoulon
Ca ne coute rien de donner tel ou conseil
Après le demandeur(*) fait ce qu'il veut
(Le seul à plaindre, c'est Excel qui se demande à quoi cela sert qu'il offre plein de fonctionnalités pour qu'elles ne soient pas utilisées)

(*) ici le demandeur = tous utilisateurs qui débutent avec Excel.
 
Dernière édition:

Sirberthoult

XLDnaute Occasionnel
staple1600
je savais que mon fichier allez faire peur...

mon userform2 n'est peut etre pas parfait je te l'accorde...mais necessaire pour avoir tout en visuel avant d'imprimer...les gouts, les couleurs...

ceci dit , ma demande n'est pas énorme... je veux juste transferer un bout de code de "Sub Nombre de biberons_change() " dans un module et y faire reference pour alléger la longeur du code de mon userform...
ce doit etre une chose de facile pour quelqu'un d'expérimenté je pense...enfin je crois...

je ne cherche pas particulierement à réecrire, ce code complexe qui fonctionne.

merci tout de même.
 

Staple1600

XLDnaute Barbatruc
Re

@Sirberthoult
Sur XLD, parfois je ponds de la formule, du code VBA, du conseil ou de l'opinion personnelle, sans oublier quelques blagounettes.
Dans tous les cas, les XDLnautes qui les lisent en font ce qu'ils veulent

Si j'étais encore moi, et que je laisserai naitre en moi l'envie d'utiliser un Userform, je serai d'accord avec @gbinforme pour titiller du module de classe qui facilite grandement les choses.

Mais présentement, je laisse mes petits camarades jeu du forum prendre le relais.
 

Discussions similaires

Réponses
8
Affichages
396
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…