Besoin d’aide pour module de classe

fenec

XLDnaute Impliqué
Bonjour le forum,
Besoin de vos compétences
Ayant plusieurs textbox renommés avec le même code ainsi que dans initialisation de mon userform, j’ai après de nombreuses recherche lu qu’il fallait passer par des modules de classe mais mon niveau vba est trop faible et n’y suis pas parvenu.
Cordialement
Philippe
 

Pièces jointes

  • BD Forum.xls
    167.5 KB · Affichages: 64
  • BD Forum.xls
    167.5 KB · Affichages: 78
  • BD Forum.xls
    167.5 KB · Affichages: 85

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

Bonsoir.
Votre UserForm_Initialize semble s'occuper seulement de ComboBox, non de TextBox.
Alors pour ça, oui, je confirme, j'ai un module de classe ComboBoxLiées qui s'occupe de toute la gestion des choix, si ça vous intéresse, et se comporte vis à vis de l'Userform comme un super-ComboBox unique. La différence c'est qu'au lieu de renvoyer seulement un ListIndex dans sa List il renvoie carrément une liste des numéros de lignes en correspondance avec les choix dans la base de donnée qui a servi à l'alimenter. C'est très simple à utiliser, il faut juste lire les commentaire qui expliquent ce que chaque chose fait, en évitant de chercher à comprendre comment elle le fait. Parce que rien n'est à y adapter selon les besoins, tout se pilote depuis l'Userform.

Il ne vous reste que 7 TextBox à écrire ou lire aux bonnes colonnes, et elles ont des noms clairs. Je vous déconseille de le faire avec une boucle selon les Tag, surtout qu'elles correspondent à des données de natures différentes. L'objet ComboBoxLiée, lui, permet de le faire avec une boucle pour les ComboBox dont on lui a confié la charge. Vous pourriez encore réduire à une ou deux TextBox en mettant des ComboBox pour presque tout, notamment le Prénom et la date de naissance.
 
Dernière édition:

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Bonjour le forum, Dranreb
Déjà merci pour votre réponse et oui je serais intéressé par votre module de classe comboboxliées pour voir le fonctionnement et voir comment le module est écrit ce qui me permettrait peut être de savoir le reproduire pour mes textbox
Cordialement
Philippe
 

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

Bonjour.

Non, aucune chance de faire quelque chose d'aussi puissant pour d'autres contrôles que des ComboBox. Mais je crois que je ne comprends pas ce que vous voulez dire. Il n'y a pour ainsi dire plus de TextBox dans votre Userform si vous mettez partout des ComboBox à la place. Alors je ne vois ce qui vous gêne de traiter le peu qui reste au détail, ni donc l'intérêt d'un module de classe. Pour les corrections en majuscules des ComboBox, à la frappe et non au Change comme vous le faisiez, c'est aussi réglé: ComboBoxLiées reporte les évènements KeyPress des ComboBox à l'intention de l'Userform dans un évènement KeyPress global qui lui est propre. Il y a juste un paramètre CBM en plus, devant, pour pouvoir repérer le contexte de déclenchement, dont notamment CBM.CBx: la ComboBox concernée.
Je vais continuer à travailler un tout petit peu sur votre classeur avant de vous le renvoyer équipé.

Le voici un tout petit peu plus aboutit, mais il y a un problème d'orientation souhaitée de la finalisation. Je vois de moins en moins de quels TextBox vous parlez.
 

Pièces jointes

  • CBxLiéesFenec.xls
    275 KB · Affichages: 75
  • CBxLiéesFenec.xls
    275 KB · Affichages: 69
  • CBxLiéesFenec.xls
    275 KB · Affichages: 60
Dernière édition:

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Bonjour le forum, Dranreb

Merci pour ce début de fichier.
Je vais essayer de comprendre le principe et le continuer
Pour les textbox qui reste il est vrai qu'un module de classe devient inutile.

Cordialement,

Philippe
 

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Bonsoir le forum, Dranreb

Je suis parvenu à ma façon à compléter le code pour l'enregistrement en suivant votre exemple
j'ai ensuite créé un nouveau code afin de vider les textbox vu que celui qui vide le formulaire ne le faisait pas (je n'ai d'ailleurs pas compris le pourquoi car si je supprime une fiche la les textbox sont bien vidés!!!)
Par contre je ne parviens pas à stopper l'objet ComboBoxLiées pour effectuer une modification, besoin de votre aide pour ce point.

je vous joint le fichier avec ma maigre avancée dans lequel j'ai mis quelques commentaires en réponses à vos questions

Cordialement,

Philippe
 

Pièces jointes

  • cbxliees Fenec.xls
    248.5 KB · Affichages: 46

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

pourquoi faire des combobox sur des points qui ne changerons plus par la suite?
Pour pouvoir aussi rechercher dessus et pour que ça vienne automatiquement sans que vous n'ayez besoin de vous en occuper.
La question se pose exactement à l'envers de la votre: pourquoi faire des ComboBox sur ce qui peut changer et des TextBox sur ce qui ne le peut pas. On met en principe justement des ComboBox quand ça ne change plus. Quand ça peut changer on met en principe des TextBox. Sauf si on souhaite pouvoir faire aussi des recherche dessus. Mais alors il faut ajouter un bouton bascule par exemple dans l'Userform pour faire basculer son mode de fonctionnement en mode Fiche, afin qu'un changement de valeur d'une ComboBox soit interprété comme une intention de modifier la fiche et non plus de rechercher une autre ligne.
 

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Re le forum, Dranreb

Vais méditer sur votre réponse car là je suis un peu perdu.

il faut ajouter un bouton bascule dans l'Userform
Pardonnez mon ignorance c'est quoi un bouton bascule?

faire basculer son mode de fonctionnement en mode Fiche
La perso je ne comprends rien!!!!

il y a un problème d'orientation souhaitée de la finalisation
Que vouliez vous dire par la dans votre post#4?

j'apprends beaucoup avec vous mais la j'ai l'impression de ne comprendre qu'un mot sur deux...

Me relance dans mes recherches afin de trouver ce dont vous parlez

Cordialement,

Philippe
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

Ça s'appelle comme ça dans la boîte à outils : "Bouton bascule". C'est représenté par une icône qui figure un bouton normal et en dessous un bouton enfoncé. C'est un contrôle qui à l'aspect d'un bouton normal mais qui reste enfoncé quand on clique dessus une première fois et qui se désenfonce quand on le refait. Vis à vis de l'Userform, c'est très voisin d'une CheckBox (case à cocher). Sa propriété Value est True ou False.
La réaction standard de l'objet ComboBoxLiée quand on change un ComboBox dont il a la charge c'est de chercher une ligne qui contient dans les bonnes colonne les valeurs de tous ceux qui sont renseignés. S'il n'en trouve qu'une, il renseigne les autres ComboBox et avertit l'Userform en lui communiquant le numéro de ligne. S'il n'en trouve aucune c'est qu'on veut en créer une, mais en tout cas jamais changer une ligne existante. Pour pouvoir faire ça une fois la fiche affichée il faut avoir préalablement stoppé le ComboBoxLiées suite à l'enfoncement d'un bouton bascule fait pour demander sa mise dans cet état.
Je voulais dire que je ne voyais pas bien où vous vouliez en venir d'après ce que vous aviez déjà fait.

Edit: Et je ne suis toujours pas sûr de ce que vous voulez faire. Il est même possible que si vous avez tant de mal à comprendre mes explications, c'est peut être bien parce qu'il ne vous est jamais venu à l'esprit une seule seconde comment j'ai pu interpréter, peut être à tort, la présence étrange de ComboBox pour des choses modifiables. Alors au cas où ce ne serait pas du tout ça, je tiens à préciser ceci: Ce ne serait pas si compliqué si vous n'aviez jamais besoin de restreindre la rechercher d'une personne uniquement à l'ensemble de celles qui ont par exemple un Statut de cadre ou un emploi de contrôleur, etc. (ce que l'objet ComboBoxLiées sait très bien faire d'ailleurs quand il est actif). C'est à dire si un choix ou une frappe dans une certaine ComboBox avait toujours le même but: soit cerner la recherche à un ensemble de fiches portant cette valeur, soit modifier cette valeur dans une fiche existante, mais pas l'un ou l'autre selon le contexte. Ou alors, comme il ne peut pas deviner votre intention, il faut bien un bouton pour demander à basculer d'un contexte, c'est à dire d'un mode de fonctionnement à l'autre, ne croyez vous pas ?
 
Dernière édition:

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Bonjour le forum, Dranreb
Dans un premier temps excusez moi pour la réponse tardive n’ayant vu votre modification de post que ce matin.
Après 4 jours de recherche sur les boutons bascules sans succès pour la mise en œuvre, j’ai relu vos commentaires concernant les combobox pour les choses fixes et les textbox pour les choses modifiables.
En repartant de tous vos commentaires, j’ai remplacé mes textbox par des combobox et là tout fonctionne très bien. Je peux ajouter une nouvelle personne, modifier une ligne existante comme je le souhaitais.
Mais je continue néanmoins mes recherches sur les boutons bascules car je souhaite vraiment découvrir le fonctionnement de ce bouton que je ne suis jamais servi, ce qui me permettrait de ne plus avoir que des combobox.
Ainsi les codes pour écrire en majuscule dans les textbox deviendraient inutiles puisque repris par les comboboxliés.
Je vous joins mon fichier dans lequel je me trouve à cet instant.
Cordialement,
Philippe.
 

Pièces jointes

  • cbxliees Fenec v2.xls
    250 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

Bonjour

De mon coté j'avais avancé aussi. Je n'est pas encore ouvert votre fichier. J'avais fini par utiliser le bouton normal servant a valider les modifs. Il affiche "Ouvrir" pour pouvoir utiliser certaines ComboBox comme champs modifiables sans provoquer de recherche de fiche.
Je vais ouvrir le fichier pour voir ce que vous avez fait.

Edit: Tout de même curieux que vous ne trouviez pas ce bouton bascule (ToggleButton). Chez moi dans la petite boite à outils il est entre le bouton d'option (OptionButton) et le cadre (Frame) Mais ça ne veut rien dire: j'ai pu le déplacer un jour. Si vous ne l'avez vraiment pas faites un clic droit sur une zone vide de la boites à outils, cliquez sur Contrôles supplémentaires… Cochez le dernier Microsoft Forms 2.0 ToggleButton.
J'ai utilisé les Tag des ComboBox: les 3 1ers caractères sont "Idt" ou "Mod" selon qu'ils correspondent à une donnée d'identification non modifiable ou une donnée pouvant changer. Les 3 dernier servent à orienter les traitements selon la nature de l'information et les corrections de frappes désirées.
 

Pièces jointes

  • CBxLiéesFenec.xls
    268.5 KB · Affichages: 57
  • CBxLiéesFenec.xls
    268.5 KB · Affichages: 70
  • CBxLiéesFenec.xls
    268.5 KB · Affichages: 68
Dernière édition:

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Bonjour le forum, Dranreb
Merci encore pour l’aide que vous m’apportez.
J’ai enfin grâce à vos conseils trouvé ce fameux bouton bascule ainsi que le bouton toupie que je n’avais pas non plus.
Je vais maintenant jeter un œil sur votre fichier.
Cordialement,
Philippe.
 

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Re le forum, Dranreb
C’est impressionnant, pas d’autre mot, juste un petit bémol concernant le format des dates. D’après ce que j’ai vu (vite fait), vous passez par les tags pour définir l’écriture et par HabiliterContrôles pour le format (si j’ai bien compris).
Vais essayer de l’appliquer bien que je pense encore avoir besoin de votre aide sur ce point.
Je m’y mets de suite et vous tiens au courant.
Et si j’y parviens, j’essaierais de mettre en place mon projet avec votre première idée : le fameux bouton bascule, mais là, ce n’est pas gagner.
J’aurais sans doute besoin de vos lumières pour cela aussi.
Cordialement,
Philippe.
 

Dranreb

XLDnaute Barbatruc
Re : Besoin d’aide pour module de classe

Je passe par Tag pour identifier qu'il s'agit d'une date, par HabiliterContrôles pour vérifier si elle est valide, par Cmn_Enregistrer_Fiche_Click pour l'écrire en tant que date. Je pense qu'il n'y a aucun problème avec les dates puisque tant que le contenu des ComboBox concernées n'est pas convertible en date valide, l'age ou l'ancienneté n'est pas affichée et on ne peut ouvrir la fiche pour la créer. Je ne retouche pas aux formats des cellules qui conditionnent la façon dont ces dates sont affichées dans la BD.
Au fait avez vous vu que j'ai rangé en numérique les N°SS dans les cellules, avec format d'affichage approprié, et non plus en texte.
Pour le dernier point, il vaut peut être mieux comme j'ai fait finalement: l'avantage de mettre plusieurs fonctions différentes selon le contexte sur le bouton par défaut, c'est qu'elles peuvent toutes être actionnées par Entrée. On pourrait faire pareil pour un bouton marchant avec Échap: Annuler, Effacer, Quitter.
 
Dernière édition:

fenec

XLDnaute Impliqué
Re : Besoin d’aide pour module de classe

Re le forum, Dranreb
Quelques précisions sur mon dernier post en réponse au votre
Concernant le format, je voulais dire qu’à la frappe par exemple si je tape une date de naissance : 171043, l’age donne -353 ans vu qu’il n’y a plus les séparateurs " / " à la sortie du textbox comme je l’avais défini avec :

Code:
Cb_Date_Entrée_Société.Value = Format(Cb_Date_Entrée_Société.Value, "dd/mm/yyyy")

Dans l’état actuel il est vrai que si je mets les séparateurs c’est nickel mais je désirerais que tout soit automatique afin qu’il n’y est rien à faire lors du remplissage de la fiche si plusieurs utilisateurs.
Vous avez même répondu en plus à une de mes attentes qui aurait fait le sujet d’une autre demande, à savoir : " faire la mise à jour de l’age " avec :

Code:
Me.Lb_Age.Caption = Format(Int((Date - CDate(Me.Cb_DateDeNaissance.Text)) / 365.2425), "0 ans")

En ce qui concerne les N° de SS oui j’ai remarqué mais n’ai pas encore étudié le code de prêt.

Et pour finir je dois oublier la solution du bouton bascule c’est bien cela ?

Cordialement,
Philippe.
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 134
Membres
103 129
dernier inscrit
Atruc81500