UserForm avec textbox remplies en fonction de choix dans combo/textbox ou optionbutto

grokouic

XLDnaute Junior
Bonjour a tous,

dans le cadre des inscriptions pour la nouvelle saison sportive, nous cherchons à déveloper un petit logiciel Excel permettant de récupérer les informations des licencies de l'année précédentes sur un listing ou inscrire de nouveau adhérents, en reduisant au maximum les risques d'erreurs.

Jusque là, j'ai trouvé un mine d'informations et de codes très utiles pour déclarer des variables, vérifier que les champs sont bien remplis, sélectionner la premiere ligne vide du listing, trier par ordre alphabétique .... bref un vrai bonheur.

Je me demandais néanmoins s'il était possible de faire apparaitre dans un userform des zones "déduites ou calculées" en fonction des informations contenues dans ce même userform. Je m'explique:
1) en fonction de la date de naissance saisie, je voudrais qu'une textbox mentionne "automatiquement" la catégorie en se référent à un tableau de 3 colonnes avec date de naissance minimum / maximum et non de la catégorie. Ainsi si je rentre la date de naissance 01/06/2008 que s'affiche "moustique" qui correspond aux personnes nées entre 01/01/2008 et 31/12/2012
2) en fonction de la sélection dans un optionbutton (selection unique) je souhaiterais qu'une textbox mentionne "automatiquement" le tarif de la saison, toujours en référence à une table qui serait dans le fichier (je sais faire un recherchev mais pas dans un formulaire)
3) en fonction du nombre d'enfant inscrit par fratrie (optionbutton ou toupie) je souhaiterais récupérer le tarif et afficher une décôte (toujours en fonction d'une table de donnée) pour enfin afficher le tarif définitif.

merci de vos lumières

Arnaud
 

grokouic

XLDnaute Junior
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Tout cela me semble réalisable mais... avec le fichier exemple qui va bien...

Bonjour Robert,
voici le fichier exemple qui va bien (enfin presque bien)

Pour définir clairement mes attentes:
1) je souhaite que la combobox 1 du userfrom1 se remplisse en fonction de la date de naissance saisie dans la textbox 3 selon la table A1:D 12 de l'onglet "données"
2) je souhaite que la combobox 3 du userfrom1 se remplisse en fonction de ce qui est saisi dans la combobox 2 selon la table F2:G11 de l'onglet "données"
3) dans mon userform 1 j'ai rajoutédu code pour n'enregistrer que si toutes les informations sont indiquées, notamment dans des textbox et des combobox. Pourriez-vous m'indiquer le code à rajouter en " or ..." pour également valider que au moins un optionbutton est coché par frame ?


merci de votre aide
 

Pièces jointes

  • Projet Formulaire inscription PUC 2013 2014 - projet light.xls
    226.5 KB · Affichages: 102

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Bonjour Grokouick, bonjour le forum,

En pièce jointe ton fichier modifié avec les codes commentés. J'ai modifié le nom des Label pour une meilleure cohérence des messages. J'ai créer des GroupName aux OptionButton de la même catégorie et ajouté des Tag à chaque premier OptionButton d'un même groupe. J'ai réorganisé l'ordre des tabulations de l'UserForm1 et supprimé certaines lignes inutiles dans ton code. Regarde si ça te convient...
 

Pièces jointes

  • Grocouick_v01.xls
    214.5 KB · Affichages: 121

grokouic

XLDnaute Junior
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Bonjour Robert

D'abord, merci pour ton aide précieuse
ensuite: Waouhh !!! Tu as du t'en apercevoir à mon code, je suis un bricoleur de code du dimanche alors je dois avouer que je vais prendre le temps de lire et de disséquer patiemment ce que tu m'as écris pour bien comprendre.
je suis d'autant plus impressionné que tu as dû passer 20 fois moins de temps que moi pour arriver à ce résultat (post à 16h, ta répônse à 19h) !!!!

Voici mes commentaires et questions

1) dans le cadre des inscriptions pour une nouvelle saison, 80% de nos actions consistent à aller chercher les informations de l'année dernière. Tu avais placé " z' " devant la ligne load userform 2 et donc je ne pouvais cliquer sur ce bouton sans que me soit demandé de rentrer une date. J'ai enlevé les deux caractères et cela fonctionne. Ma question, a quoi correspondant " z' " ?

2) j'ai un problème de récuperation des numeros de téléphone avec le 0 de devant qui saute lorsque exporté dans le userform 1. J'imagine qu' une commande du type UserForm1.TextBox11 = .Cells(i, 9) n'est pas assez précise. Quelle astuce aurais-tu pour récupérer du texte et nom un nombre ?

3) lorsque j'extrais des données existante, la date de naissance apparait bien (extraction) mais du coup la combobox 1 ne se remplit pas
automatiquement. puis-je alors rappeller la private sub TextBox3_Exit à la fin de la Private Sub CommandButton1_Click() du userform 2 pour résoudre le probleme ? vaut-il mieux recopier le code ou appeler la private sub ?

4) dans la boucle qui vérifie que toutes les données sont entrées, lorsque tu m'indiques "tu adapteras" dans la ligne case "1", "2"... peux tu me confirmer que c'est ici que je rentre le numéro des textbox de l'userform que je juges indispensables ? (idem pour les combobox un peu plus loin ?)

5) pour le controle des Option Button, lorsque gn(0) gn(1) et gn(2) sont vides j'ai bien un message et l'orsque je clique sur ok je peux rajouter ce qui manque, mais pas pour gn(3) et gn(4)=> j'ai bien un message "vous devez renseigner ..." mais lorsque je clique sur ok j'ai un message de bug qui me renvoit à la ligne If ctrl.Tag = i Then 'condition 2 : si la propriété "Tag" du contrôle est égale à i.
J'ai l'impression qu'il y a doublon de code mais je n'arrive pas à trouver lequel. Pourrais-tu m'aider.

merci beaucoup

Arnaud
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Bonjour Arnaud, bonjour le forum,

En pièce jointe la version avec les modifications demandées :
1) c'était juste une erreur. Il fallait supprimer ce "z"
2) résolu avec Format
3) résolu en reprenant le code de l'UserForm1
4) je te confirme. il suffit de rajouter le ou les derniers caractères après TextBox pour que celui-ci soit pris en compte. Idem pour les comboboxes...
5) résolu en rajoutant des Tag à tous les bouton d'option et pas seulement aux premiers de chaque GroupName.
 

Pièces jointes

  • Grocouick_v02.xls
    224.5 KB · Affichages: 85

grokouic

XLDnaute Junior
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Merci beaucoup pour ton aide Robert, cela correspond en tous points à ce que je cherchais !!!

Pourrais-tu m'indiquer où tu as déclaré/rajouté les Tag à tous les bouton d'option? est ce dans la ligne "Tag" de la fenêtre propriété de chaque option bouton?
J'ai remarqué que le numero de tag était le même pour tous les optionbutton de la même frame. Ces numéros doivent-ils correspondre à ceux déclarés en gn(x)?

Deuxième question, maintenant que les champs "categorie" et "tarif" sont automatisés (merci Robert), puis-je transformer les combobox en letterbox et changer le code par exemple de
Me.ComboBox3.ListIndex = Me.ComboBox2.ListIndex
en
Me.Letterbox40.Value = Me.ComboBox2.ListIndex

ou encore
Me.ComboBox1.Value = cel.Value
en
Me.Letterbox41.Value = cel.Value

Est-il enfin possible d'empecher l'utilisateur du userform de modifier ces 2 (nouvelles) letterbox automatisée en en les protégeant d'une quelconque manière ?

bonne soirée et encore un énorme merci
 

grokouic

XLDnaute Junior
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Je viens de touver une solution à mes 2 dernières questions
Solution bricoleur de code du dimanche =passer les 2 comboboxes en ENABLE / FALSE dans les propriétés comme cela elles ne sont pas modifiables, et peuvent (ce n'est qu'estétique) rester des comboboxes dans le code.
 

grokouic

XLDnaute Junior
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Robert,

il ne reste à mon sens qu'un bug dans tous le fichier:
si j'appelle le userform 2 pour rechercher un ancien licencié et que par malheur je clique sur exporter alors que la lsite de choix est vide, alors j'ai un rapport de bug et le fichier plante.

Je pensais rajouter
On Error Resume Next
au début du code de la Private Sub CommandButton1_Click() du userform2

cela semble marcher mais est-ce la bonne (et intelligente) solution ?

merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Bonjour Arnaud, bonjour le forum,

1) les Tag sont rajoutés par l'intermédiaire de la fenêtre Propriétés. Donc en dur... Chaque OptionButton d'une même Frame a le même Tag.
2) Les comboboxes sont remplacées par des textboxes (respectivement 16 et 8) avec les code adapté pour la validation
3) Pour l'UserForm2, la ligne :
Code:
If Me.ComboBox1.Value = "" Then Exit Sub
est préférable que On Error Resume Next...
La version 3 :
 

Pièces jointes

  • Grocouick_v03.xls
    241.5 KB · Affichages: 61

Robert

XLDnaute Barbatruc
Repose en paix
Re : UserForm avec textbox remplies en fonction de choix dans combo/textbox ou option

Bonjour Arnaud, bonjour le forum,

Parce que je suis maniaque, une version 4 bien ordonnée. La plupart des contrôles ont été renommés et leur propriété Tag correpond au numéro de colonne dans laquel leur valeur doit être renvoyée. Je préfère construire l'UserForm dans le même ordre que le tableau (ou le tableau dans le même ordre que l'UserForm) mais cette astuce permet de renvoyer les données à l'aide d'une boucle, sans lister tous les contrôles...
la version 4 :
 

Pièces jointes

  • Grocouick_v04.xls
    234.5 KB · Affichages: 136

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50