Création d'un formulaire

Résolu/Fermé
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 15 févr. 2016 à 13:29
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 17 févr. 2016 à 09:42
Bonjour,


Je cherche à créer un formulaire me permettant à l'issue d'un double click sur une plage de cellule, de pouvoir remplir 4 différentes cellules disposées sur la même ligne via une liste de choix propres à chaque colonne.

Mais j'avoue qu'entre le VBA (que je maîtrise de mieux en mieux grâce à vous notamment) et l'userform (pour le coup totalement nouveau), je suis bien perdu.



Clairement je suis certain que mes mauvaises en la matière ont fait que ce que j'ai trouvé sur internet n'est pas bien écrit ou adapté. mais pour la même raison je ne comprend pas où et quoi.

Je joint ici un exemple de fichier.

http://www.cjoint.com/c/FBpmDdwfPwT

Donc en double-cliqaunt dans la feuille DATA sur les cellules category 1, 2 ou 3, on peut choisir ce que l'on va mettre dans ces cellules via le formulaire de choix.

_ Il est important que l'utilisateur ne puisse pas remplir qu'une seule catégorie mais bien les trois sinon il ne peut valider son choix.
_ Les listes de données ne dépasseront pas 40 lignes mais leur longueur peuvent varier si l'on rajoute des données.


est-ce que vous pourrez m'expliquer en détail la solution que vous voyez pour que je puisse à mon tour comprendre et apprendre?
Je vous remercie pour le temps que vous m'accorderez.

Sincèrement,


Koalacid
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 févr. 2016 à 14:04
Pomper des trucs sur internet est comme tu l'écris mal adaptés ou souvent mal écrit

Je te conseille d'investir un peu de temps en étudiant ces tutos:
https://excel.developpez.com/cours/?page=prog#userform
(les 2 premiers)

ensuite quelq'un ici pourra te dépanner sur des difficultés que tu rencontrera

Dans l'attente
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
15 févr. 2016 à 15:19
Yes Merci, ca m'aide beaucoup.

On va pas se mentir je fais des tonnes de test dans le vent mais petit à petit j'adapte quelque chose de plus en plus proche de ce que je veux. C'est le principal
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 févr. 2016 à 15:00
Bonjour

Juste pour lui donner un peu de courage, fichier modifie pour choix et ecriture dans onglet DATA. Code appel UF dans VBA feuille DATA

https://www.cjoint.com/c/FBpnZgLKTzf
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
16 févr. 2016 à 10:33
Bon alors le problème c'est que maintenant que je tâte un peu le terrain, je commence à avoir des idées (d'autres pourraient appeler ca des complications mais je souhaite rester optimiste).

Voilà mon nouveau problème avec ce userform.

J'aimerai qu'il se déclenche en cascade.

il fonctionne très bien entre la listbox1 et 2 mais le passage listbox2 et 3 ne va pas du tout. Il ne pompe les données que des trois premièreslistes au lieu des 16 que je lui demande de prendre en compte.

Est-ce que quelqu'un a une idée de la faute que j'ai dû faire?

Et deuxième question, est-ce qu'il est possible d'intégrer une boucle au lieu de refaire à chaque fois les 16blocs de codes s'il y a un update dans le fichier?


Voici le code en question:

La cascade 1 fonctionne très bien mais la 2 pas du tout (pourtant c'est l'adaptation de la première... :( )

' ********************** CASCADE1 *********************

' Cascade Lists 2

Private Sub ListBox1_Change()
Dim derlgn As Byte
Sheets("Lists").Select
Select Case ListBox1.ListIndex
Case Is = 0
derlgn = Range("B3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 2), Cells(derlgn, 2)).Address
ListBox2.ListIndex = 0
Case Is = 1
derlgn = Range("C3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 3), Cells(derlgn, 3)).Address
ListBox2.ListIndex = 0
Case Is = 2
derlgn = Range("D3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 4), Cells(derlgn, 4)).Address
ListBox2.ListIndex = 0
Case Is = 3
derlgn = Range("E3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 5), Cells(derlgn, 5)).Address
ListBox2.ListIndex = 0
Case Is = 4
derlgn = Range("F3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 6), Cells(derlgn, 6)).Address
ListBox2.ListIndex = 0
Case Is = 5
derlgn = Range("G3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 7), Cells(derlgn, 7)).Address
ListBox2.ListIndex = 0
Case Is = 6
derlgn = Range("H3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 8), Cells(derlgn, 8)).Address
ListBox2.ListIndex = 0
Case Is = 7
derlgn = Range("I3").End(xlDown).Row
ListBox2.RowSource = Range(Cells(4, 9), Cells(derlgn, 9)).Address
ListBox2.ListIndex = 0


End Select
End Sub

' ********************** CASCADE2 *********************

' Cascade Lists 3

Private Sub ListBox2_Change()
Dim derlgn As Byte
Sheets("Lists").Select
Select Case ListBox2.ListIndex

Case Is = 0
derlgn = Range("B9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 2), Cells(derlgn, 2)).Address
ListBox3.ListIndex = 0
Case Is = 1
derlgn = Range("C9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 3), Cells(derlgn, 3)).Address
ListBox3.ListIndex = 0
Case Is = 2
derlgn = Range("D9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 4), Cells(derlgn, 4)).Address
ListBox3.ListIndex = 0
Case Is = 3
derlgn = Range("E9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 5), Cells(derlgn, 5)).Address
ListBox3.ListIndex = 0
Case Is = 4
derlgn = Range("F9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 6), Cells(derlgn, 6)).Address
ListBox3.ListIndex = 0
Case Is = 5
derlgn = Range("G9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 7), Cells(derlgn, 7)).Address
ListBox3.ListIndex = 0
Case Is = 6
derlgn = Range("H9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 8), Cells(derlgn, 8)).Address
ListBox3.ListIndex = 0
Case Is = 7
derlgn = Range("I9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 9), Cells(derlgn, 9)).Address
ListBox3.ListIndex = 0
Case Is = 8
derlgn = Range("J9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 10), Cells(derlgn, 10)).Address
ListBox3.ListIndex = 0
Case Is = 9
derlgn = Range("K9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 11), Cells(derlgn, 11)).Address
ListBox3.ListIndex = 0
Case Is = 10
derlgn = Range("L9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 12), Cells(derlgn, 12)).Address
ListBox3.ListIndex = 0
Case Is = 11
derlgn = Range("M9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 13), Cells(derlgn, 13)).Address
ListBox3.ListIndex = 0
Case Is = 12
derlgn = Range("N9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 14), Cells(derlgn, 14)).Address
ListBox3.ListIndex = 0
Case Is = 13
derlgn = Range("O9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 15), Cells(derlgn, 15)).Address
ListBox3.ListIndex = 0
Case Is = 14
derlgn = Range("P9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 16), Cells(derlgn, 16)).Address
ListBox3.ListIndex = 0
Case Is = 15
derlgn = Range("Q9").End(xlDown).Row
ListBox3.RowSource = Range(Cells(10, 17), Cells(derlgn, 17)).Address
ListBox3.ListIndex = 0


End Select
End Sub



Et la question bonus: Quelle est la signification de cela:
ListBox3.ListIndex = -1

Sous-entendu, quelle est la différence si je met 0 au lieu de -1?

Je vous remercie pour votre patience avec moi et votre aide !

Sincèrement
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
16 févr. 2016 à 10:48
Bonjour,

Sous-entendu, quelle est la différence si je met 0 au lieu de -1?
-1 = text vide, 0= premier text de la liste selectionne

Vous pourriez mettre votre fichier a dispo, car le code c'est bien gentil mais .....

Pour votre info, le remplissage de vos listboxs, 5 lignes de code par listbox
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
16 févr. 2016 à 11:07
Hello, merci pour ta rapidité,


Voilà un fichier qui représente parfaitement mon problème:


http://www.cjoint.com/c/FBqkgCJGhrT

J'ai pas compris le sens de ta dernière remarque, tu veux dire que je ne peux pas mettre plus de 5choix dan une listebox?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016
16 févr. 2016 à 12:23
Re,

J'ai pas compris le sens de ta dernière remarque Non, c'est le nombre de lignes de code par listbox pour les remplir
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
16 févr. 2016 à 13:30
Ok, donc je suis laaaargement au-dessus alors. Ou bien le fait al condition liée à la listbox 2 réinitialise ce compte?

Parce que la première cascade fonctionne mais pas la deuxième qui ne prend en compte que les 3 premiers items de la listbox. En vrai je m'arrache des cheveux là, j'essaie une foule de combinaison possible sans parvenir à autre qu'un message d'erreur si je change quelque chose.

est-ce que l'ajout d'une boucle pour remplacer les 16conditions ne résoudraient pas le problème?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016
Modifié par f894009 le 16/02/2016 à 16:20
Re,

est-ce que l'ajout d'une boucle pour remplacer Y a pas besoin de boucle

fichier modifie pour remplissage Listbox1, 2 et 3

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

Pour enregistrement et appel de l'UF voir le fichier f894009 15 févr. 2016 à 15:00 que je vous ai mis a dispo
0