[RESOLU]remplir listview en fonction d'une valeur

regnum

XLDnaute Junior
Bonsoir a tous

Je sais que le sujet a été traité plusieur fois,mais je n'arrive pas à l'adapter à mon problème.:mad:

J'expose:
J'aimeraie alimenter la listview en fonction d'une différence entre deux valeurs (de toutes mes feuilles).
Dans mon fichier joint, j'aimerais remplir la listview si la valeur E < H des feuilles "machine et machine1".
(en sachant que mon fichier d'origine comprends une trentaine de feuille)

Et serait il possible de mettre dans la première colonne de la listview le nom de la feuille en fonction de la ligne référence:rolleyes:


merci
 

Pièces jointes

  • Classeur1.xls
    95 KB · Affichages: 166
  • Classeur1.xls
    95 KB · Affichages: 172
  • Classeur1.xls
    95 KB · Affichages: 171
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : remplir listview en fonction d'une valeur

Bonsoir regnum, et à ceux qui passeront pas là,

J'aimerais bien t'aider, mais comme tu n'écoutes pas trop..... J'hésite.:)

Tu embrouilles encore avec tes "Liaisons"
https://www.excel-downloads.com/threads/resolu-probleme-listview-et-combobox.164580/

La solution n'est pas trop complexe:
- Tu fais une boucle sur toutes tes feuilles.
- Pour chaque tu compare la colonne "E" et "H" ligne par ligne.

Tu n'ajouteras donc qu'en cas de valeur "<" la ligne concernée dans ta ListView.

Je te laisse bosser, car je suis certain que tu seras capable de le construire par toi-même.

Amicalement,

Yann
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir listview en fonction d'une valeur

Bonsoir Regnum, Yann-56, le Forum

Je ne pense connaitre ni l'un ni l'autre d'entre vous, mais ceci est ma faute je ne viens plus trop souvent sur XLD. (Temps dispo très rare)

Si j'ai bien interprété la Question de Regnim, j'ai une approche comme ceci, qui confirme évidemment la nécessité d'une boucle sur toutes les feuilles...

Je me base sur des Feuilles Structurées dont la Plage Concernée est Identique pour tout le Classeur (voir la Constante)

Il est clair également que je pars du principe que toutes les feuilles du classeurs sont concernée dans cet exemple... (Sinon voir mon Post précédent pour Dad http://www.excel-downloads.com/forum/165739-report-automatique.html)

VB:
Option Explicit
Private Const CELL_ADDRESS As String = "E5:E22" 

 
 
Private Sub UserForm_Initialize()
Dim WS As Worksheet
Dim WB As Workbook
Dim Cell As Range, Plage As Range
Set WB = ThisWorkbook
 
With ListView1
'affichage en mode "Détails"
.Font.Bold = True
.View = 3 'lvwReport
.Gridlines = True
.LabelEdit = 1 'Pour "Locked" la ListView
With .ColumnHeaders
.Clear
.Add , , "famille", 80
.Add , , "référence", 80
.Add , , "désignation", 80
.Add , , "fournisseur", 80
.Add , , "QTE", 30
.Add , , "stock mini", 60
.Add , , "Difference", 60
End With
End With
 
For Each WS In WB.Worksheets
Set Plage = WS.Range(CELL_ADDRESS)
 
For Each Cell In Plage
If Cell.Value < Cell.Offset(0, 3) Then '+++ si la valeur E < H +++
With Me.ListView1
.ListItems.Add , , WS.Name
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -3)
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, 3)
.ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Value - Cell.Offset(0, 3)
End With
End If
Next Cell
Next WS
End Sub

Là j'ai tout ramené dans la ListView plus une colonne de fin "Différence", je te laisse le soin de modifier à ta convenance...

Cordialement

@+Thierry

PS EDITION il manquait la déclaration de Constante dans mon copié / collé
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir listview en fonction d'une valeur

Hello Yann

Et une certaine soirée à l'Ambiance Café avec mon PC portable alors ? Oui ca me dit quelque chose :)

C'est toi qui avait un Projet à finaliser à l'époque, et maintenant c'est bien c'est toi qui aide, cool !

Bien à Toi

@+Thierry
 

YANN-56

XLDnaute Barbatruc
Re : remplir listview en fonction d'une valeur

Et aussi ta barbe à la fenêtre d'un hôtel en Autriche?

"IFFIC" ne t'en souviendras-tu pas, mais c'était à l'époque des "Demos" de Thierry.

Entre temps, par suite d'usurpation, j'ai du changer de pseudo

Si c'est bien toi...... Je saurai te rappeler moult Merci.

Yves
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir listview en fonction d'une valeur

Héhéhé

Ce n'était pas en Autriche mais à Paris avec un Drapeau Rolling Stonautrichien ;-)



Oui IFFIC je me souviens maintenant, désolé, "Yann" ca me disait quelqu'un d'autres d'XLD...

Bien à toi IFFIC donc Yves

@+Thierry




PS Sorry Regnum pour l'aparté !!!
 
Dernière édition:

regnum

XLDnaute Junior
Re : remplir listview en fonction d'une valeur

rebonsoir a tous

merci yann de me répondre
J'aimerais bien t'aider, mais comme tu n'écoutes pas trop..... J'hésite.

Tu embrouilles encore avec tes "Liaisons"
Lien supprimé

mais je ne vois pas de problème de" liaison" sur mon fichier.
merci pour le coup de main


merci thierry de prendre un peu de temps pour mon petit problème.
je regarde ton code et te tiens au courant...

merci encore
A+
 

YANN-56

XLDnaute Barbatruc
Re : remplir listview en fonction d'une valeur

Re Thierry,

Trop génial !!!!!!!!!!!!!!

Il est de coutume d'avoir des qualificatifs dithyrambiques envers celui qui vous a aidé.

Mais là, je dois te dire qu'au-delà de tes aides qui datent d'un nombre d'années inavouables,
tu es à l'origine de ma passion pour le VBA, et ma fervente fidélité à XLD. Vrai de vrai!

En lisant ton Post à Dad, j'ai eu confirmation qu'il s'agissait bien de toi.
Tu es anglophone quand tu programmes; et cela se voit.

Vachement heureux de te revoir ici.......... Pourvu que cela dure..... Tu vas encore faire des heureux!

Réellement cela me fait grand plaisir.

J'ai une caisse de "Démo" par Thierry dans mes archives......
(Et comme tu l'as constaté, bonne trace dans ma mémoire)

Amicalement, et sincèrement,

Yves (Alias Yann-56)
 

YANN-56

XLDnaute Barbatruc
Re : remplir listview en fonction d'une valeur

Re regnum,

Je t'aurais proposé strictement la même méthode que thierry.
(Il est normal que l'on retrouve chez l'élève les traces de l'enseignement du maître):)
Si ce n'est sans les "Offset" que je ne peux pas piffer.

Regarde bien le code de Thierry, car outre l'efficacité du résultat,
tu as un cours sur la déclaration des variables, et la logique de construction.............. A retenir!

Là t'as plus le droit de lâcher la rampe. Accroche-toi.

On attend le résultat.

Amicalement.

Yann
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir listview en fonction d'une valeur

Re Yves, Regnum qui semble-t'il est dans les bras de Morphée...

Pourquoi tu ne peux pas "piffer" les Offset, ils sont ultra efficaces et simples d'emploi, il suffit de savoir se positionner, puis on fait tout avec une Range en une seule Colonne dans la Mémoire.

Sur des tables raisonnables en taille il va de soit, sinon il vaut mieux mettre tout dans tableau "array" et plus dans une Variable Range, mais là je pense que les débutants sont vite paumés, surtout si on commence à les redimensionner...

Tiens par ailleurs, dans ta réponse pour Océane sur le Format des Hyperlinks, je pense que tu as lu trop vite la question, car tu es on ne peut plus radical avec ton Delete, ce n'est pas ce le résultat escompté par la demande je crois ;-) Mais là je n'ai pas vraiment envie de jouer avec les Formats à cette heure ci !


Cordialement,

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : remplir listview en fonction d'une valeur

Bonjour Habitude, le Fil, le Forum

J'ai bien noté ta remarque tout à fait justifiée. Si on analyse le Classeur et les besoins de Regnum il y a deux raisons majeures et une troisième moins importante d’avoir procédé ainsi.

1) Les feuilles du classeur exemple ne sont PAS structurées de la même manière que les items présents dans la ListView (e .g. en colonne 4 nous avons « No Facture » qui ne doit pas être reprise dans la ListView, alors que la colonne 5 doit l’être ainsi que la colonne 8 et non la 6 et 7)
2) Le Champ « Différence » n’existe pas dans les Feuilles, il doit être calculé par VBA et inscrit dans la ListView.
3) Le Nom de Feuille est repris aussi d’une autre source, mais c’est moins embêtant.


Un autre point, bien que ce n’est pas dans « les règles de l’art », la reprise de chaque ligne « .ListItems(.ListItems.Count). » est probablement bien plus facile pour un novice à lire que d’essayer de comprendre une succession Tableaux séquentiels.


Du coup comme mon copain Yann-54 n’aime pas les « Offset », et pour me faire pardonner du petit délire en aparté dans ce fil, j’ai repris le fichier de Regnum avec une version sans Offset et sans répéter des Add pour la ListView, tout en Array et Tableau Séquentiel.


Hélas c’est plus du niveau de la performance car n’étant pas arrivé à transposer mon tableau « TabDataArray » pour une insertion direct dans la ListView (comme je peux faire sur un ListBox de base) la descente par deux boucles en cascade pour charger cette ListView est loin d’être optimisée. On perd tout le bénéfice de ne plus lire les feuilles ligne à ligne comme dans un Offset de Range.


Si quelqu’un connait la méthode d’insertion directe d’un Tableau dans une ListView, je ne suis pas tellement familier avec les ListView.

Cordialement,
@+Thierry
 

Pièces jointes

  • List_View_Thierry_Demo_Tableaux.zip
    40.6 KB · Affichages: 135

Discussions similaires

Réponses
8
Affichages
598

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87