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
 

sonic730

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

Apparemment je n'ai rien derriere.
J'ai simplement une liste qui commence à p11 pour s'arreter à p26.

Pour ce qui est de la liste j'ai mis ceci.
Maintenant si tu as mieux ...

je te le met entier, car je ne sais pas exactement ce que tu veux.
C'est en fait tout mon formulaire avec tous les champs.
Je pense qu'il y a plein d'erreur, mais bon j'ai cherché à droite et gauche :)
Donc n'hesite surtout pas à me le dire.

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 = Sheets("journal").Cells(65000, 1).End(xlUp).Row + 1
'On vérifie que les champs obligatoires sont rempli correctemment
If txtaction.Text = "" Then
MsgBox "veuillez indiquer ce que vous voulez faire", vbCritical, "Champs manquant"
txtaction.SetFocus
ElseIf txtappeln°.Text = "" Then
MsgBox "veuillez entrer le numéro de l'appel", vbCritical, "Champs manquant"
txtappeln°.SetFocus
ElseIf txtdatederèglement.Text = "" Then
MsgBox "veuillez indiquer la date de règlement de l'appel", vbCritical, "Champs manquant"
txtdateappel.SetFocus
ElseIf txtmembres.Text = "" Then
MsgBox "veuillez indiquer à qui se rapporte la transaction", vbCritical, "Champs manquant"
txtmembres.SetFocus
ElseIf txtcomptecopro.Text = "" Then
MsgBox "veuillez indiquer le compte de la copropriété", vbCritical, "Champs manquant"
txtcomptecopro.SetFocus
ElseIf txtcréditcomptemembres.Text = "" Then
MsgBox "veuillez indiquer le montant versé par le copropriétaire", vbCritical, "Champs manquant"
txtcréditcomptemembres.SetFocus
ElseIf txtdébitcomptebanque.Text = "" Then
MsgBox "veuillez indiquer le montant versé à la banque", vbCritical, "Champs manquant"
txtdébitcomptebanque.SetFocus
Else
'On enregistre les données
ActiveSheet.Cells(NumLigneVide, 1) = UCase(txtaction.Text)
ActiveSheet.Cells(NumLigneVide, 2) = UCase(txtappeln°.Text)
ActiveSheet.Cells(NumLigneVide, 4) = UCase(txtdatederèglement.Text)
ActiveSheet.Cells(NumLigneVide, 5) = UCase(txtmembres.Text)
ActiveSheet.Cells(NumLigneVide, 7) = UCase(txtcomptecopro.Text)
ActiveSheet.Cells(NumLigneVide, 8) = UCase(txtcréditcomptemembres.Text)
ActiveSheet.Cells(NumLigneVide, 12) = UCase(txtdébitcomptebanque.Text)
'On efface le formulaire et on replace le curseur sur le premier champs (Appel n°)
txtaction.Text = ""
txtappeln°.Text = ""
txtdatederèglement.Text = ""
txtmembres.Text = ""
txtcomptecopro.Text = ""
txtcréditcomptemembres.Text = ""
txtdébitcomptebanque.Text = ""
txtaction.SetFocus
End If
End Sub

Private Sub txtaction_Change()

End Sub

Private Sub txtappeln°_Change()

End Sub

Private Sub txtcomptecopro_Change()

End Sub

Private Sub Txtmembres_Change()

End Sub

Private Sub UserForm_Initialize()
Me.txtaction.RowSource = "journal!s11:s" & Sheets("journal").Cells(17, 11).End(xlDown).Row
Me.txtcomptecopro.RowSource = "journal!R11:R" & Sheets("journal").Cells(16, 11).End(xlDown).Row
Me.txtmembres.RowSource = "journal!P17:p" & Sheets("journal").Cells(14, 17).End(xlDown).Row
Me.txtappeln°.RowSource = "journal!t11:t" & Sheets("journal").Cells(18, 11).End(xlDown).Row
End Sub

Private Sub UserForm_Activate()
Me.txtmembres.ListIndex = -1
Me.txtappeln°.ListIndex = -1
Me.txtcomptecopro.ListIndex = -1
Me.txtaction.ListIndex = -1
End Sub

Private Sub CmdFermer_Click()
frmrèglementdesappels.Hide
End Sub


Merci
 
Dernière édition:

Modeste

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

re-bonsoir,

Pour comprendre ton code sans le fichier associé, il faudrait que je sois bien plus doué que je ne le suis. Cependant, il reste que dans cette partie, je crains que tu aies un souci:
Code:
Private Sub UserForm_Initialize()
Me.txtaction.RowSource = "journal!s11:s" & Sheets("journal").Cells(17, 11).End(xlDown).Row
Me.txtcomptecopro.RowSource = "journal!R11:R" & Sheets("journal").Cells(16, 11).End(xlDown).Row
Me.txtmembres.RowSource = "journal!P17:P" & Sheets("journal").Cells(14, 17).End(xlDown).Row
Me.txtappeln°.RowSource = "journal!t11:t" & Sheets("journal").Cells(18, 11).End(xlDown).Row
End Sub

Lorsque tu écris
Code:
Cells(17,11)
(voir mon message d'hier, 20h39 !) il s'agit de la cellule K17 (ligne 17, colonne 11) et donc
"journal!s11:s" & Sheets("journal").Cells(17, 11).End(xlDown).Row
donnera une référence à une plage allant de S11 à S ... 65536 !!!! Pas étonnant que tu aies du "déchet" dans ton comboBox!
 

Modeste

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

Bonjour,

En pièce jointe, une solution avec des plages de cellules nommées, qui devraient -si elles sont bien utilisées- te simplifier la tâche.
Pas certain d'avoir encore d'autres suggestions en magasin, après celle-ci. Cependant, comme cette technique simplifie grandement la partie du code qui te pose problème, elle devrait te convenir :confused:
 

Pièces jointes

  • sonic730 (2).xls
    47 KB · Affichages: 67

sonic730

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

Merci pour ta réponse
La solution que tu m'as donné fonctionne t-elle aussi si la liste se trouve n'importe ou ?
De plus j'ai encore un autre gros problème.
hier en asseyant de trouver une solution, ca à planté excel.
Depuis sur 1 formulaire lorsque je le lance j'ai un message d'erreur.
"erreur d' execution 380
impossible de définir la propriété de rowsource.valeur de propriété non valide"

Qu'est-ce que cela veut il bien vouloir dire en language pas futé comme moi ?

Merci
 
Dernière édition:

Modeste

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

Bonsoir sonic730,

La solution que tu m'as donné fonctionne t-elle aussi si la liste se trouve n'importe ou ?
... Euh ... et bien ... Que voilà une question précise! :eek:
As-tu regardé dans le fichier que je t'ai envoyé? Si oui, as-tu regardé dans le menu Insertion --> Nom --> Définir, comme je l'indiquais dans le fichier lui-même? Si oui, peux-tu préciser le sens de ta question?

Pour ta seconde question, et toujours sans fichier fourni par toi, je ne peux dresser ici la liste de toutes les hypothèses possibles et imaginables ... Désolé!
 

sonic730

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

Pour la seconde question apparemment ca marche. Je ne sais pas ce que j'ai bidouillé mais je crois que c'est ok.
Pour la première question, j'ai bien regardé ton fichier qui est d'ailleurs extrêmement simple, mais je cherche toujours le menu que tu m'as dis de suivre, mais je ne trouve pas...
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 884
Membres
103 017
dernier inscrit
pierre noyer