Creer une liste déroulante dans un formulaire

sonic730

XLDnaute Junior
Bonjour à tous,

je suis en train de gérer les comptes d'une petite copro ; j'ai créer des tableaux, ainsi qu'un formulaire pour remplir un journal de façon plus convivial.
Voila mon problème :
Dans mon formulaire, j'aimerais avoir une liste, pour pouvoir choisir les noms des personnes sans les retaper à chaque fois, et ceci pour pour d'autres infos également.
Je suis vraiment débutant et aimerais avoir de l'aide pour résoudre ce problème.

Je vous joints le code du formulaire.

Private Sub cmdajouter_Click()
Dim NumLigneVide As Integer
'on active la Feuille "Journal"
Worksheets("journal").Activate
'On trouve la dernière ligne vide du tableau, et on enregistre le numéro de la ligne dans la variable NumLigneVide
NumLigneVide = ActiveSheet.Columns(1).Find("").Row
'On vérifie que les champs obligatoires sont rempli correctemment
If txtdateappel.Text = "" Then
MsgBox "veuillez remplir la date correctement", vbCritical, "Champs manquant"
txtnom.SetFocus
ElseIf txtmontantappel.Text = "" Then
MsgBox "veuillez remplir le montant correctement", vbCritical, "Champs manquant"
txtmontantappel.SetFocus
Else
'On enregistre les données
ActiveSheet.Cells(NumLigneVide, 1) = UCase(txtaction.Text)
ActiveSheet.Cells(NumLigneVide, 2) = UCase(txtappeln°.Text)
ActiveSheet.Cells(NumLigneVide, 3) = UCase(txtdateappel.Text)
ActiveSheet.Cells(NumLigneVide, 5) = UCase(Txtmembres.Text)
ActiveSheet.Cells(NumLigneVide, 6) = UCase(txtmontantappel.Text)
ActiveSheet.Cells(NumLigneVide, 7) = UCase(txtcomptecopro.Text)
ActiveSheet.Cells(NumLigneVide, 9) = UCase(txtdébitcomptemembres.Text)
ActiveSheet.Cells(NumLigneVide, 10) = UCase(txtcréditcomptecopro.Text)
'On efface le formulaire et on replace le curseur sur le premier champs (Appel n°)
txtaction.Text = ""
txtappeln°.Text = ""
txtdateappel.Text = ""
Txtmembres.Text = ""
txtmontantappel.Text = ""
txtcomptecopro.Text = ""
txtdébitcomptemembres.Text = ""
txtcréditcomptecopro.Text = ""
txtappeln°.SetFocus
End If
End Sub

Private Sub CmdFermer_Click()
Frmnouvelappel.Hide
End Sub



Dans le code ci dessus j'ai seulement des boutons normaux, et j'aimerais par exemple avoir une liste (avec combobox par exemple) pour :
Appel n°
Membres
Montant d'appel
Compte copro

Sachant que dans le journal qui est un tableau j'ai déjà créer cette liste déroulante.

Donc si vous avez des réponses à mon problème....

Je vous joindrais bien le fichier mais il est trop gros...

Merci
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

Bonjour sonic730 et sois le bienvenu,

Dans le code de ton userform, tu pourrais ajouter ce qui suit:
Code:
Private Sub UserForm_Initialize()
ComboBox1.List = Application.Transpose(Sheets("Feuil1").Range("A2").CurrentRegion)
End Sub
... de manière que ta liste soit "garnie" au moment où ton userform est "chargé". Dans l'exemple ci-dessus, on suppose que les "membres" sont encodés dans la feuille1, dans la cellule A2 et suivantes (sans cellules vides dans la liste, bien sûr)

testé sous Excel2000
 

sonic730

XLDnaute Junior
Re : Creer une liste déroulante dans un formulaire

Merci modeste pour ta réponse

Je suis vraiment pas bon en vba.
Ce que je peux te dire c'est que la liste se trouve sur une autre feuille.
j'ais trouvé un code, mais vu que je ne sais pas comment ca marche je cherche. Peux tu me dire si ca peux marcher, ou si c'est n'importe quoi ?:

Private Sub UserForm_Initialize()
Me.essai.RowSource = "journal!P14:p" & Sheets("journal").Cells(16, 11).End(xlDown).Row
End Sub

Merci
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

re-bonsoir,

Ma foi, le code que tu proposes utilise une syntaxe à laquelle je suis moins habitué ... Il me semble que j'apporterais une petite modification (en rouge, ci-dessous):
Code:
Me.essai.RowSource = "journal!P14:P" & Sheets("journal").Cells([COLOR="Red"]14, 16[/COLOR]).End(xlDown).Row
... en imaginant que "essai" est le nom de ton comboBox
 

sonic730

XLDnaute Junior
Re : Creer une liste déroulante dans un formulaire

merci pour ton conseil,
Je vais essayer, mais peux tu me dire la difference entre les 2 formules ?

J'ai encore un petit souci.

Après avoir rempli le formulaire et fait valider, au lieu que tout se mettent à la suite du tableau, il se met au début.

Le problème je pense vient de :

'On trouve la dernière ligne vide du tableau, et on enregistre le numéro de la ligne dans la variable NumLigneVide
NumLigneVide = ActiveSheet.Columns(1).Find("").Row

Code valable si le tableau commence en A1.

Le tableau ne commence pas à en A1, et je voudrais que quelque soit où se trouve le tableau cela marche, si cela est possible.
Le tableau commence à la 3eme ligne, mais avant il y a des calculs sur les 3 lignes, et commençant à la colonne J.

si tu as des solutions ?

Merci encore
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

re²,

une chose à la fois, pour mon petit neurone :eek: ... si tu veux bien:
Code:
Sheets("journal").Cells(14, 16).End(xlDown).Row
permet, au départ de la 14e ligne et de la 16e colonne (soit la cellule P14 de la feuille "journal") et en descendant dans la même colonne, de repérer la dernière cellule non-vide.
Ce qui était écrit, au départ, faisait le même type de recherche, mais depuis
Cells(16, 11)
soit la cellule à l'intersection de la 16e ligne et 11e colonne (K16, si je compte bien!)

Dis-nous déjà si ceci répond à ta première question. Si ça tombe, on pourra s'inspirer de ce bout de code, pour répondre à la seconde question.
 

Staple1600

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

Bonsoir à tous


sonic730
Signales, stp, quand tu postes ta question sur plusieurs forums
(Ça évitera de donner des réponses qui seront peut-être déjà données :rolleyes:, sans oublier que c'est un signe de courtoisie )
 

sonic730

XLDnaute Junior
Re : Creer une liste déroulante dans un formulaire

Oui merci cela répond à ma question.

Par contre j'ai essayé ta formule qui me parait plus simple :

Private Sub UserForm_Initialize()
txtaction.List = Application.Transpose(Sheets("journal").Range("s11").CurrentRegion)

problème :
Au lieu que ca me prenne les informations en colonne, ca me les prends en ligne...

:confused:
 

Staple1600

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

Re


Le principal est que tu t'en souviennes pour une prochaine fois ;)


PS: ce n'est pas une obligation , mais c'était la règle jadis au début des forums d'entraide, d'éviter ce qu'on appelait le crossposting
C'était un temps ou l'on parlait encore de la netiquette.
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

re³, Salut Staple1600,

Merci à Staple de nous rappeler ces petites règles de savoir-vivre :) ceci dit, je ne risque pas, en ce qui me concerne, de "crossposter": un neurone ==> un forum (peux pas faire mieux)

Ceci dit, pour en revenir à nos "moutons":
Aaaargh !! (dirais-je) … en réfléchissant à ta deuxième question, je relisais le code de ton premier message. J'y lis que le tableau que tu crées se trouve dans la feuille "journal". Dans ton message de 19:05', tu mentionnes que ta liste se trouve dans "une autre feuille" … Mais alors, ce n'est pas dans la feuille "journal" qu'il faut faire la recherche, pour créer la liste !? Et en conséquence, ce n'est peut-être pas non plus au départ de P14 … re-Aaaargh!! (ajouterais-je)
Décidément, sans fichier, ce n'est jamais pareil!

Idem, pour ta dernière question: ".CurrentRegion" fait référence à la "zone en cours" au départ de S11, dans ton exemple. Impossible pour nous, de savoir ce qu'il y a "autour" de cette cellule.
 

sonic730

XLDnaute Junior
Re : Creer une liste déroulante dans un formulaire

Pour modeste

Je me suis mal expliqué, je pense

Le tableau se trouve bien sur la feuille journal, ainsi que les listes (à coté du tableau)

Le tableau se termine sur la colonne n et la première des listes commence à P11, et finis à P25 (j'ai fais une faute de frappe j'ai mis s11...).

Il y a une autre liste en Q11, une autre en R11 et cela jusqu'à T11.
J'espère avoir été plus clair....

Merci
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

et re encore,

Le tableau se trouve bien sur la feuille journal, ainsi que les listes (à coté du tableau)
Aaaah, c'est plus clair!

la première des listes commence à P11, et finis à P25 (j'ai fais une faute de frappe j'ai mis s11...).
Il y a une autre liste en Q11, une autre en R11 et cela jusqu'à T11.
Donc CurrentRegion était une mauvaise idée, mais
Code:
Me.essai.RowSource = "journal!P11:P" & Sheets("journal").Cells(11, 16).End(xlDown).Row
semble fonctionner

Pour recopier ensuite le contenu de ton userform, repérer la première "ligne vide" sous ton tableau pourrait se faire à l'aide de quelque chose comme:
Code:
premièreLigneVide = Sheets("journal").Cells(65000, 3).End(xlUp).Row + 1
(on fait ici un peu l'inverse: au départ de C65000 et en remontant dans la colonne, on repère la ligne de la première cellule vide) J'ai vérifié la colonne C, puisque dans ton code, c'est un textBox dont tu vérifies qu'il n'est pas vide .. J'en ai déduis que les cellules de cette colonne ne seraient jamais vides :confused:
 

sonic730

XLDnaute Junior
Re : Creer une liste déroulante dans un formulaire

Merci modeste pour tes infos,
Apparemment ca fonctionne pas trop mal.

Il y a juste un petit bug (je pense) au niveau de mon formulaire.
Dans le formulaire, il y a bien tous les noms de ma liste, mais il y a encore pleins de lignes blanche derrière, que l'on peut faire défiler avec l'ascenseur.
Est-ce normal ?

Pendant que j'y suis je me permet une autre question.
Est-il possible de prédéfinir un format de date dans le formulaire ?
Si oui peux tu m'expliquer comment faire ?

Merci beaucoup
 

Modeste

XLDnaute Barbatruc
Re : Creer une liste déroulante dans un formulaire

Bonsoir,

Il y a juste un petit bug (je pense) au niveau de mon formulaire.
Dans le formulaire, il y a bien tous les noms de ma liste, mais il y a encore pleins de lignes blanche derrière, que l'on peut faire défiler avec l'ascenseur.
Est-ce normal ?
Ben non ! Vérifies tout de même si, en-dessous de P25, tu n'aurais pas des cellules qui semblent vides ... et qui ne le seraient pas!? Et puis, tu as choisi quel bout de code pour "garnir" ta liste, en fin de compte?

En PJ, un exemple simplifié ...

Pendant que j'y suis je me permet une autre question.
Est-il possible de prédéfinir un format de date dans le formulaire ?
Si oui peux tu m'expliquer comment faire ?
Je vais être prudent, je vais dire qu'à ma connaissance, non. Mais pour ne pas mourir idiot, si quelqu'un conteste cette hypothèse, ... je ne demande pas mieux!
Par contre, il est possible de vérifer la "validité" d'une date qui figurerait dans un contrôle (cfr PJ aussi)
Ou alors, une recherche sur le forum sur "dtPicker" te donnera des pistes supplémentaires ... mais ne mettons pas la charrue avant les boeufs! :D
 

Pièces jointes

  • sonic730.xls
    30 KB · Affichages: 84

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 151
Membres
103 133
dernier inscrit
mtq