Problème d'affichage Listview
Bonjour à tous!
Ma preoccupation se trouve à 3 Niveaux:
- à l'initialisation de mon userform, je n'arrive pas à afficher les infos dans ma listview.
voici mon code. je narrive pas à voir pourquoi il n'affiche rien
Private Sub UserForm_Initialize()
With Usf1.ListVAppro
.ListItems.Clear
With .ColumnHeaders
.Clear
.Add Text:="Designation", Width:=220, Alignment:=fmAlignmentLeft
.Add Text:="Qte", Width:=30, Alignment:=lvwColumnCenter
.Add Text:="PU", Width:=60, Alignment:=lvwColumnCenter
.Add Text:="Remise", Width:=60, Alignment:=lvwColumnCenter
.Add Text:="Montant", Width:=65, Alignment:=lvwColumnCenter
End With
.Gridlines = True
.BorderStyle = ccFixedSingle
.FullRowSelect = True
.View = lvwReport
End With
End Sub2. je voudrais aussi ajouter es infos contenues dans des zone e texte dans le listview. la aussi pareil vu que je n'arrive à rien afficher ans le listview
voici le code que j'ai essayer
Private Sub BtnAjoutListe_Click()
With Usf1.ListVAppro
.ListItems.Add , , Usf1.TextArticles
x = .ListItems.Count
.ListItems(x).ListSubItems.Add , , Usf1.TextQte
.ListItems(x).ListSubItems.Add , , Usf1.TextPU
.ListItems(x).ListSubItems.Add , , Usf1.TextRemise
.ListItems(x).ListSubItems.Add , , Usf1.TextTotal
End With
End Sub3. et enfin transferer les donnees de la listview vers une feuille de calcul exxel
là aussi rien n'y fait. je n'arrive pas à envoyer les infos dans la feuille de calcul.
Dim f As Worksheet, f_Stock As Worksheet
Dim Lst As Long, i As Long, j As Long
Set f = Worksheets("Achat")
Lst = f.Range("b100000").End(xlUp).Row + 1
If Me.ListVAppro.ListItems.Count < 1 Then
MsgBox " Ajouter des produits a la facture!", vbCritical + vbOKOnly, ""
Exit Sub
For i = 1 To Me.ListVAppro.ListItems.Count
' transfert listview vers bdd achat
Lst = f.Range("b100000").End(xlUp).Row + 1
f.Cells(Lst, 2) = Me.ListVAppro.ListItems(i).Text 'Designation
f.Cells(Lst, 4) = Me.ListVAppro.ListItems(i).ListSubItems(1).Text 'Qté
f.Cells(Lst, 5) = Me.ListVAppro.ListItems(i).ListSubItems(2).Text 'PU
f.Cells(Lst, 6) = Me.ListVAppro.ListItems(i).ListSubItems(3).Text 'Remise
f.Cells(Lst, 7) = Me.ListVAppro.ListItems(i).ListSubItems(4).Text 'Montant
f.Cells(Lst, 2) = CDate(Me.TextDate.Value) ' Date
f.Cells(Lst, 2) = Me.TextNFact.Value ' N° Facture
'transfert listview vers bdd mouvement stock
f_Stock = Sheets(9)
Next i
End If
' reinitialiser listview
Me.ListVAppro.ListItems.Clear
Set f = Nothing
End SubPJ: je joint le fichier exemple pour plus de clarté
merci en avance pour toutes vos contributions
cordialement
Bonjour,
merci d'utiliser les balises de code lorsque vous postez un code. Cliquez sur l'icone </> dans la barre de menu et coller vos codes dans la fenêtre
Pour votre demande au sujet de la sub initialize, il n'y a pas de souci sur le code (qui d'ailleurs n'est pas le même que dans votre fichier où vous faites appel à un code AffichageLw)
Pour résoudre votre souci faites ceci :
- renommez votre listview en ListVAppro1
- remplacez dans le code initialize "ListVAppro" par "ListVAppro1"
- ré-exécutez le code initialize
Si cela fonctionne (de mon coté oui), refaites la marche inverse (donc supprimer le 1 du nom de la listview) car pour moi il s'agit d'un bug
Merci Dan pour la promptitude de ta réponse.
j'ai essayer mais rien ne change. j'ai changé plusieurs fois le nom de la listview. mais toujours aucun résultat
Rien ne s'affiche dans le listview.
j'ai essayer mais rien ne change. j'ai changé plusieurs fois le nom de la listview. mais toujours aucun résultat
alors supprimez votre listview et refaites-la.
Au départ c'est ce que j'ai fait et cela a foncitonné
merci grandement.
j'ai supprimer et refait
Ca passe.
le code pour ma deuxième préoccupation également fonctionne bien!
t'aurais des pistes pour la troisième qui est de transférer les donnes du listview vers la feuille Excel?
t'aurais des pistes pour la troisième qui est de transférer les donnes du listview vers la feuille Excel?
bah le code est presque bon. Sauf que dans le colonne vous utilisez 3 x la colonne B pour des informations différentes
- en colonne A refarticle, cela vient de quelle textbox
- Les deux textbox facture et Date on les met où dans la feuille.
- Pourquoi ceci --> f_Stock = Sheets(9)
Rem : j'aurais d'abord bien figé le tableau de cette feuille Achat et peut être mettre le tableau structuré même si cela change les codes
crdlt
Bonjour à tous,
Je viens de voir ce sujet.
Je vous propose ce fichier joint.
Merci de me faire un retour.
Cordialement
Merci Payet pour ton code.
Il marche super bien!
Si j'ai bien compris ton code. Il enregistre les infos des différents textbox dans le tableau puis il met les infos dans le listview.
Sauf que dans mon cas je passe les infos dans le listview avec la commande ajoutliste puis je veux enregistrer les différentes lignes du listview dans la feuille de calcul.
Bonjour Offiange,
Je ne comprends pas!!!
La listview, me semble -t-il, est faîte pour récupérer des données dans un tableau (idem pour la listBox).
La récupération des données dans la listview permet ensuite de traiter les données récupérées : modifier, ou encore supprimer, ou consulter des données par rapport à un fournisseur, ou un produit.
Quelle est la finalité de votre projet?
Je pense qu'il faudrait plus d'éléments sur ce que vous chercher à faire, pour qu'on puisse vous aider.
Un classeur avec quelques données serait le bienvenue.
Cordialement.
Bonjour,
@Payet
Je ne comprends pas!!!
La listview, me semble -t-il, est faîte pour récupérer des données dans un tableau (idem pour la listBox).
Comme expliqué dans son premier message point 1, 2 et 3, ce que le demandeur voulait c'est compléter les textbox et ajouter dans la listview (qui est une sorte de panier)
Une fois toutes les données enregistrées en listview, il voulait valider la listview et envoyer les infos dans la feuille. Du moins c'est comme cela que j'avais compris sa demande.
En gros si je ne me trompe, c'est l'inverse que vous avez fait.
@Offiange :
t'aurais des pistes pour la troisième qui est de transférer les donnes du listview vers la feuille Excel?
Bien que vous n'avez pas répondu à mon dernier post, le code Enregister légèrement remanié dans lequel j'ai désactivé trois lignes
A tester sur votre fichier posté
Private Sub BtnEnregistrer_Click()
Dim f As Worksheet, f_Stock As Worksheet
Dim Lst As Long
Dim i As Integer
If Me.ListVAppro.ListItems.Count < 1 Then
MsgBox " Veuillez ajouter des produits a la facture!", vbCritical + vbOKOnly, "Produit Manquant"
Exit Sub
End If
For i = 1 To Me.ListVAppro.ListItems.Count
' transfert listview vers bdd achat
Set f = Worksheets("Achat")
Lst = f.Range("B" & Rows.Count).End(xlUp).Row + 1
f.Cells(Lst, 2) = Me.ListVAppro.ListItems(i).Text 'Designation
f.Cells(Lst, 4) = Me.ListVAppro.ListItems(i).ListSubItems(1).Text 'Qté
f.Cells(Lst, 5) = Me.ListVAppro.ListItems(i).ListSubItems(2).Text 'PU
f.Cells(Lst, 6) = Me.ListVAppro.ListItems(i).ListSubItems(3).Text 'Remise
f.Cells(Lst, 7) = Me.ListVAppro.ListItems(i).ListSubItems(4).Text 'Montant
'f.Cells(Lst, 2) = CDate(Me.TextDate.Value) ' Date
'f.Cells(Lst, 2) = Me.TextNFact.Value ' N° Facture
'transfert listview vers bdd mouvement stock
'f_Stock = Sheets(9)
Next i
' reinitialiser listview
Me.ListVAppro.ListItems.Clear
Set f = Nothing
End SubNB : Vu que Payet, vous a proposé quelque chose, à voir si intérêt que je vienne interférer en supplément.
Crdlt
Bonjour à tous,
Dan: Pour ma part, c'est la 1ère fois que je vois cette manière de fonctionner. Du coup je vais regarder de plus près son code initial.
Cette façon de procéder me laisse interrogateur.
Habituellement on alimente une base de données à l'aide de textBox, de comboBox, et ensuite on exploite la BDD à l'aide d'une listview ou d'une Listbox.
Mais apparemment, ce n'est pas ce que veut faire le demandeur.
En ce qui me concerne, vous n'interférez aucunement sur ce fil. Vous étiez d'ailleurs le premier à intervenir.
Je vous laisse l'accompagner, je suivrai de loin les solutions proposées.
Cordialement
@Payet :
Dan: Pour ma part, c'est la 1ère fois que je vois cette manière de fonctionner. Du coup je vais regarder de plus près son code initial.
Cette façon de procéder me laisse interrogateur.
Oui exact mais cela m'est arrivé plusieurs fois de répondre à des demandes qui vont dans ce sens. Certainement plus pratique pour l'utilisateur d'ailleurs lorsqu'il doit encoder plusieurs articles pour une même commande. Cela permet de valider après avoir bien vérifier la totalité des articles choisis.
De mon coté, habituellement si j'utilise des listbox ou listview, je le fais plutôt comme vous.
Il nous reste à attendre le retour du demandeur.
Cordialement
Bonjour Dan,
Je comprends mieux, mais, n'empêche, c'est surprenant comme façon de procéder.
Si c'est pour remplir un bon de commande, je procéderais de la même manière : choix dans la listview, clic sur Item et envoi dans textBox, puis valider et envoi dans le bon de commande. Une fois envoyé dans le bon de commande, vidage des TextBox, de nouveau choix par clic sur Item, et envoi dans TextBox, puis valider : création d'une nouvelle ligne dans le bon de Commande et envoi des données dans la nouvelle ligne, ect...
Les données je vais aller les chercher dans ma BDD.
Si besoin d'archiver, une feuille "Archive" avec un Tableau Structuré qui reçoit les données du bon de commande au moment de son élaboration.
On peut aussi créer un Pdf du Bon de commande stocké dans un dossier.
On peut aussi générer en même temps une sauvegarde du Bon de commande dans un fichier excel.
C'est pourquoi, j'avais demandé à offiange des précisions sur ce qu'il voulait avoir comme résultat.
Je n'ai eu aucun retour à ce jour.
J'ai tenu à mettre quand même le fichier sur le fil, pour éventuellement permettre à d'autres d'y avoir accès.
Cordialement.