XL 2010 Listbox alimente par un tab

JOL

XLDnaute Nouveau
bonjour,
Je suis en train de faire un fichier consultation / saisie de commande à l’aide de différents bout de code glané sur ce forum.
Il y’a plein de textbox qui alimentent un onglet. Je souhaite afficher ds une listbox les infos provenant des textbox .
Cela permet à l’utilisateur de visualiser sa commande saisie à l’aide des textbox pour éventuellement les modifier et valider sa commande.
J’ai essayé de l’alimenter par un tableau via la propriété list, mais à chaque nouvelle données cela reecrase la listbox.
Pouvez vous m’aider ?
En vous remerciant par avance
 

Staple1600

XLDnaute Barbatruc
Re

Pour remplir une Listbox, Staple toujours faire ainsi ;)
VB:
Private Sub UserForm_Initialize()
Dim lig&
lig = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.ColumnCount = 3
ListBox1.List = Application.Transpose(Application.Transpose(Feuil1.Range("A1:C" & lig)))
End Sub
Et comme tu veux passer par un tableau, on peut aussi faire
VB:
Private Sub UserForm_Initialize()
Dim lig&, t
lig = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row: t = Feuil1.Range("A1:C" & lig).Value
ListBox1.ColumnCount = 3
ListBox1.List = Application.Transpose(Application.Transpose(t))
End Sub
 

Staple1600

XLDnaute Barbatruc
Re, bonjour BISSON Nicole

J'ai du m'égarer en route
J'avais d'abord écrit ceci, mais j'avais un message d'erreur
(d'où ma proposition du message #3)
VB:
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 3
ListBox1.List = Feuil1.Range("A1").CurrentRegion.Value
End Sub
Suite au message de BISSON Nicole (aka JB?)
J'ai retesté et plus d'erreur ??

NB: J'ai pas de cellules vides dans la plage A1:Cx

EDITION: Autant pour moi, j'avais écrit au départ
ListBox1.List = Feuil1.Range("A1").CurrentRegion
Et donc sans le .Value, c'est là que le message d'erreur apparait.
 

JOL

XLDnaute Nouveau
J'ai modifier le code proposé par STAPLE 1600, cela ne fonctionne pas, j'alimente la lisbox des données souhaitées (délimitée pat une TextBox) en colonne et non en ligne, et lors d'une seconde saisie, cela les écrase.
voici mon code :
Sub Affiche_Article()
Dim ligne As Integer

Sheets("PANIER").Activate
For ligne = 2 To Range("a" & Rows.Count).End(xlUp).Row
If Cells(ligne, 1).Value = Usf.TextBoxNumeroDemande_FrameCreatDemande Then
Usf.ListBoxProduitDemande_FrameCreatDemande.ColumnCount = 3
Usf.ListBoxProduitDemande_FrameCreatDemande.List = Application.Transpose(Application.Transpose(Range("A" & ligne & ":m" & ligne)))
End If
Next ligne
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@JOL
Dans mon exemple, j'ai testé avec trois colonnes dans la plage de cellules
A1Cx
Or dans ton code, on peut lire
Range("A" & ligne & ":m" & ligne)))
Je te laisse déduire ce qu'il faut changer ;)

NB: Ne pas oublier de lire l'édition (en bas de message) de mon précédent message car j'ai corrigé mon code VBA initial.

Sinon, d'habitude il est de coutume de déclarer les lignes en Long
Dim ligne As Long
ou
Dim ligne&
 

Staple1600

XLDnaute Barbatruc
Re

@JOL
Merci de remettre tes lunettes sur ton nez, camarade.
J'ai précédemment expliqué que:
Dans mon exemple, j'ai testé avec trois colonnes dans la plage de cellules
A1Cx
Or dans ton code, on peut lire
Range("A" & ligne & ":m" & ligne)))
Je te laisse déduire ce qu'il faut changer ;)

Que je sache la colonne C et la colonne M n'ont pas le même numéro de colonne
Donc si A:C = trois colonnes
Alors A:M= ??? colonnes (je laisse faire le calcul)​

et puis faire les changements qui en découlent dans le code VBA.
 

JOL

XLDnaute Nouveau
je ne comprends pas, çà fait 2 jours que j'essaye,
j'arrive à les integrer avec additem, mais cela bloque à 10.
je suis passer par un tableau, j'ai bien toutes les colonnes affichées en ligne, mais à chaque mise à jour (d'autres saisies dans les textbox) cela ecrase les première données.
Par contre avec Additem, a chaque mise à jour, les données s'affiche dans la listbox en dessous des dernières.
?
 

Staple1600

XLDnaute Barbatruc
Re

Comme je le disais, cela fonctionne chez moi
(la preuve en image)
Et j'ai utilisé ce seul code VBA ci-dessous
VB:
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 13
ListBox1.ColumnWidths = "43;43;43;43;43;43;43;43;43;43;43;43;43"
ListBox1.ListStyle = fmListStyleOption
ListBox1.List = Feuil1.Range("A1").CurrentRegion.Value
End Sub
Si tu utilises un autre code, je n'y suis pour rien ;)
01listbox.jpg
 

JOL

XLDnaute Nouveau
j'avais utilisé Application.Transpose(Application.Transpose(Range("A" & ligne & ":e" & ligne)))
avec CurrentRegion.Value ça fonctionne beaucoup mieux.
Par contre à la première exécution, j'ai l'ensemble des données dans mon onglet, il ne prends en compte ma condition!

voici mon code :
Sub Affiche_Article()
Dim ligne As Long
'Usf.ListBoxProduitDemande_FrameCreatDemande.Clear
Sheets("PANIER").Activate
For ligne = 2 To Range("a" & Rows.Count).End(xlUp).Row
If Cells(ligne, 1).Value = Usf.TextBoxNumeroDemande_FrameCreatDemande Then
Usf.ListBoxProduitDemande_FrameCreatDemande.ColumnCount = 13
Usf.ListBoxProduitDemande_FrameCreatDemande.List = Range("A" & ligne & ":m" & ligne).CurrentRegion.Value
End If
Next ligne
End Sub

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 162
Messages
2 085 858
Membres
103 005
dernier inscrit
gilles.hery