remplissage Listview

pnlop

XLDnaute Occasionnel
Bonjour le forum,
N'ayant pas eu de succès dans mon dernier poste, j'ai remanier mon projet pour l'aborder autrement...
Mais bien sur nouveau problème:

Je joint mon fichier anonymisé pour plus de clarté.

Je souhaiterai que ma ListView1 de mon UserForm7 se remplisse avec les données de ma feuille ("commande en cours"), selon le critère du combobox2.

Exemple:
Choix du Combobox1 = "Référence" puis choix du Combobox2 = "Stock"
Click sur bouton recherche (ou automatiquement au moment du changement dans Combobox2 si plus simple)
Items de la LstView1 = toutes les lignes (à partir de la 3ème) qui contienne la valeur "stock" dans la colonne "référence".

J'ai essayé d'integrer un code trouvé pour bouclé sur mes lignes, et trouver la colonne dans laquelle la recherche s'effectue, je ne sais pas si c'est utile..
Mais je bloque pour le remplissage de ma listview.
Quelqu'un pourrait m'aider s'il vous plaît
Merci! Pnlop
 

Pièces jointes

  • expl pnlop.xlsm
    40.5 KB · Affichages: 43

Dranreb

XLDnaute Barbatruc
Re : remplissage Listview

Bonjour.
Les choix se font-ils toujours dans le même ordre ou bien dans n'importe quel ordre et facultativement ?
Vous auriez intérêt à utiliser un de mes modules de classe ComboBoxCasc ou ComboBoxLiés: vous seriez complètement déchargée de la gestion des choix dans des ComboBox CbxRéférence et CbxFournisseur. Par contre ces modules de classe décrètent des évènement qui vous donnent la liste des numéros de lignes dans la plage source à reproduire dans la ListView.
La communication de classeur risque d'être difficille car votre ListView commence par être virée du userform (message avec cette faute de français : "Impossible de charger le objet car il n'est pas disponible sur cette machine") et si je mets la mienne je suppose qu'elle risque de ne pas être connue chez vous…
 

pnlop

XLDnaute Occasionnel
Re : remplissage Listview

Bonjour Chalet53 et Dranreb et ceux qui suivent...

Dans ton essai Chalet53, cela marche tip top. Sauf que si je reproduis le code dans mon projet d'origine, la combobox2 ne se charge pas... alors qu'avant oui...??? je trouve pas le bug??


Dranreb, désolé, mais j'ai pas tout compris. Donc vais analyser plus en détail et répond. Cela dit j'ai aussi eu ce problème des "Impossible de charger le objet car il n'est pas disponible sur cette machine"... que par ailleurs je ne comprends pas du tout! En plus ça arrive sans prévenir alors que cela fonctionnait très bien durant longtemps. J'ai remarqué qu'à l'envoi par email de fichier excel, parfois, certaines propriétés d'objets se modifiaient toutes seules comme par magie!
 

CHALET53

XLDnaute Barbatruc
Re : remplissage Listview

difficile de voir ce qui se passe dans ton fichier d'origine
Dans le fichier que je t'ai transmis, la combo 2 se charge si on change la combo 1
En lançant recherche : la listview se remplit

J'ai eu le même problème que Dranreb au chargement du fichier : impossible de charger l'objet ...........

A suivre
 

pnlop

XLDnaute Occasionnel
Re : remplissage Listview

Bon, j'ai corrigé mon code pour charger la combo2. Fallait rajouter "Worksheets("commande en cours")." avant le range!
Mais quand je clique sur le bouton "recherche" du UserForm pour charger la listview... rien! et pas de message d'erreur...
 

CHALET53

XLDnaute Barbatruc
Re : remplissage Listview

tu as bien recopié le code lié au bouton Recherche Private Sub Commandbutton1_Click

j'ai fait aussi des modifs dans : Private Sub ComboBox1_Change()

... et ajouter un dim col en haut
 
Dernière édition:

pnlop

XLDnaute Occasionnel
Re : remplissage Listview

oui, j'ai bien recopié tout le code, ajouté les Worksheets("commande en cours") - vu qu'il ne charge pas la combo2 si je les mets pas, du coup, por voir, aussi ajouté Worksheets("commande en cours") devant les cells pour le remplissage listview, j'ai contrôlé les propriétés de la listview, modifié la listview pour que les colonnes soient comme dans la feuille "commande en cours" mais en mettant certaines à 0 pour les masquer (car du coup, ça copiait pas dans les bonnes colonnes chez toi, ce qui m'a fait tilter).
Je comprends pas. Est-ce que ça viendrait de ma Listview, vu que vous n'arriver pas à afficher l'objet chez vous???
 

CHALET53

XLDnaute Barbatruc
Re : remplissage Listview

Essaie d'exécuter pas à pas le code du userform
et suis instruction après instruction (notamment après avoir clicqué sur Recherche) pour voir ce qui se passe (notamment la valeur prise par la variable col et Derlig

C'est possible que ça ne copiait pas dans les bonnes colonnes : j'ai tout mis bout à bout via une boucle (hormis la 1ère colonne)

Mon fichier fonctionne t-il bien chez toi ?
 

Dranreb

XLDnaute Barbatruc
Re : remplissage Listview

Je rappelle que l'utilisation de mon objet de type ComboBoxLiés nécessite très peu de code dans un Userform et ne nécessite aucune recherche dans la base à postériori puisqu'il rend directement dans une table les numéros dans la plage source des lignes concernées par les choix.
 

CHALET53

XLDnaute Barbatruc
Re : remplissage Listview

En effet, Le problème vient du fait que l'on compare une valeur numérique (fichier colonne A) à une valeur Texte dans la combobox2
Or selon les colonnes, tu as du numérique ou du texte. J'ai fait une modification qui fonctionne
Remplace ton code par celui-ci :

Private Sub CommandButton1_Click()
'Stop
If ComboBox2.ListIndex = -1 Then Exit Sub


Dim WS As Worksheet, Cell As Range, NoCol As Byte
Dim NoLig As Integer, DerLig As Long, Var As Variant


Set WS = Worksheets("commande en cours")


DerLig = Cells(Application.Rows.Count, col).End(xlUp).Row

With ListView1
'Utilisation du N° de ligne dans une boucle For ... Next
For i = 3 To DerLig
a = Format(Cells(i, col), "@")
'Selection.NumberFormat = "@"
If a = ComboBox2 Then
.ListItems.Add , , Cells(i, 1)
For k = 2 To 8

.ListItems(.ListItems.Count).ListSubItems.Add , , Cells(i, k), , lvwColumnCenter
labelfin:
Next
End If
' ' Stop
Next

End With
Set WS = Nothing
 

pnlop

XLDnaute Occasionnel
Re : remplissage Listview

Cette fois ça fonctionne!
J'ai juste du modifier ceci: mon userform est appelé depuis un bouton qui est sur une page "accueil". Il fallait juste ajouter Worksheets("commande en cours").Activate avant d'ouvrir l'userForm.
Je suis contente que tout fonctionne. Merci beaucoup!
Si encore un peu de patience, je n'ai pas compris le "@"?!? cela correspond à une sorte de code pour que tous les formats soient identiques?
 

Si...

XLDnaute Barbatruc
Re : remplissage Listview

salut

... Il fallait juste ajouter Worksheets("commande en cours").Activate avant d'ouvrir l'userForm...

ce n'est pas obligatoire, il suffit de bien utiliser une variable déjà définie (voir fichier joint avec réductions de codes).

A propos des variables, de façon générale j'en utilise un minimum en faisant en sorte de les déclarer en fonction de leur portée et de leurs utilisations.
 

Pièces jointes

  • Alimentation ListView.xlsm
    31.6 KB · Affichages: 58

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec