Question sur liste déroulante
Bonjour le forum,
Je suis entrain de mettre en application mon apprentissage sur les tableaux structurés et le VBA par la création d'une petite gestion de stock. Pour le mouvement des articles en entrée/sortie j'ai créé une liste déroulante dynamique nommée "l_designation" et que j'appelle dans un Combobox grâce à la propriété "RowSource". Cette liste fonctionne parfaitement. Toutefois je ne sais pas si cela fonctionnerait sur les Mac ou des Excel anciens. Ne vaudrai-t-il pas mieux intégrer quelques lignes dans le code du userform hébergeant la combobox? Je m'interroge sur le bien fondé de ma réflexion mais aussi sur les quelques lignes que je pourrais ajouter éventuellement. Voici le code du userform pour les mouvement d'entrées:
Private Sub CommandButton1_Click()
Dim lig As Integer
Sheets("Mouvements").Unprotect Password:="d"
With Worksheets("Mouvements").ListObjects("t_mouvement")
If .ListRows.Count = 0 Then
.ListRows.Add: lig = 1
Else: .ListRows.Add: lig = .ListRows.Count
End If
With .DataBodyRange
.Item(lig, 1) = Date
.Item(lig, 2) = FormEntree.ComboBox1
.Item(lig, 3) = Val(FormEntree.TextBox1)
.Item(lig, 5) = FormEntree.TextBox2
End With
End With
FormEntree.ComboBox1 = ""
FormEntree.TextBox1 = ""
FormEntree.TextBox2 = ""
End Sub
Private Sub CommandButton2_Click()
Unload FormEntree
Sheets("Mouvements").Protect Password:="d"
End
End Sub
Bonjour
que j'appelle dans un Combobox grâce à la propriété "RowSource". Cette liste fonctionne parfaitement. Toutefois je ne sais pas si cela fonctionnerait sur les Mac ou des Excel anciens. Ne vaudrai-t-il pas mieux intégrer quelques lignes dans le code du userform hébergeant la combobox?
Rowssource ne fonctionne pas sur MAC.
Puis pour la enième fois, c'est à peu près tous les jours que je l'écrit ici... (encore 2 fois hier) , oubliez cette instruction et utilisez ADDITEM ou LIST (encore plus avec les tableaux structurés d'ailleurs)
Si votre userform est unique dans votre fichier, vous n'êtes pas obligé de spécifier sont Nom (Formentree). Vous pouvez l'enlever ou la remplacer par Me (le Me n'est pas obligé non plus).7
exemple --> au lieur de Unload FormEntree vous pouvez mettre
Unload me
Crdlt
Bonjour le forum
J'ai bien l'impression que Dan m'a un peu secoué! Si les Mod lisent l'intégralité des posts ce n'est pas mon cas et j'en suis désolé. Même avec la fonction recherche on ne trouve pas forcément ce que l'on recherche. J'ai 72 ans et il me semble que je me suis fais grondé comme un gamin
Ceci dit mon problème est toujours le même et je n'arrive pas à le résoudre. Alors je transmets mon fichier à l'avis des membres du forum afin que je puisse avoir dans ma combobox1 du formulaire "FormEntree" la liste du champs "Désignation" de mon tableau "t_stock" sachant que cette liste doit être dynamique. J'ai fait des essais avec ComboBox1.list et mon tableau structuré t_stock mais j'ai tourours le champs "Désignation" vide dans ma combobox.
Mon userform s'ouvre en cliquant sur le bouton "Réception Entrées en magasin". Il est à noter que je n'en suis qu'au début de l'application et je ne demande pas à ce qu'on me la résolve dans son intégralité. Je demande simplement à ce que les membres qui me proposent quelque chose restent uniquement dans le cadre de cette liste déroulante et je les en remercie par avance.
Bien amicalement
Yves
Bonsoir,
Hum... allez j'admets avoir été un peu trash....Désolé
C'est vrai qu'à force de répéter, on réagit et les mots peuvent parfois dépasser nos pensées. Donc mes excuses si vous avez été un peu choqué par mes propos.
"Viocs".... cela ne veut rien dire d'autant que j'en fait partie aussi.
Pour votre demande, mettez ce code dans votre userform "Formentree"
Private Sub UserForm_Initialize()
With Sheets("Stock").ListObjects("t_stock")
If .ListRows.Count = 1 Then
ComboBox1.AddItem .DataBodyRange.Item(1, 3).Value
Else:
ComboBox1.List = .ListColumns(2).DataBodyRange.Value
End If
End With
Cordialement
Re boujour
Un grand merci pour la réponse Dan. J'ai bien cherché sur le web mais je n'ai pas vu de code ressemblant à celui-ci. Je vais essayer de m'en imprégner du mieux que je le pourrai.
Cordialement.