Création d'un formulaire
Résolu
Koalacid
Messages postés
70
Statut
Membre
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
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
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:
- Création d'un formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
3 réponses
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
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
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
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
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... :( )
Et la question bonus: Quelle est la signification de cela:
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
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
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?
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?
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
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
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