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
Oui. (puisque la vocation de ce forum c'est l'entraide )
Mais pour cela, ce serait mieux que tu joignes un fichier Exemple, non? (C'est vrai qu'on oublie vite la charte du forum en douze ans , surtout quand on s'inscrit un soir de réveillon)
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
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.
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
@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&
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
Dans mon fichier exemple, cela fonctionne.
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 13
ListBox1.List = Feuil1.Range("A1").CurrentRegion.Value
End Sub
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.
?
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