[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, Thierry, Habitude, et à ceux qui passeront par là,

Thierry: Tu as totalement raison quant à mon intervention dans le Fil d'Oceane.
Avant de ramener ma fraise, je ferais bien de prendre le temps de lire et de comprendre la question!

Je joins une petite bidouille que je me suis amusé à faire dans le cadre du sujet présent.
Pas très académique, j'en conviendrai. Mais c'est l'orientation pour laquelle j'aurais opté dans ce cas là.

Je serais très heureux que tu aies un dialogue avec Habitude..... Je t'assure; c'est une pointure!

Le chargement "En Bloc" d'une ListView, il sait l'expliquer. J'ai déjà bénéficié de son aide sur ce point.
C'est balaise et impressionnant........ Sur 22000 lignes on passe de 20 à ½ seconde max.

Pour revenir, vite fait, sur le "Offset" Voici qq fils où l'on m'en a rappelé le bien fondé.
Je vais donc cesser d'être "Breton têtu", ne serait-ce que pour montrer que ce n'est pas synonyme de "Borné"

De ce pas j'ouvre ton dernier Fichier et grand mes yeux pour certainement encore apprendre.

Amicalement,

Yann
 

Pièces jointes

  • REGNUM.xls
    108.5 KB · Affichages: 107

regnum

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

bonsoir a tous ,yann,thierry...

merci de me faire partager votre savoir...
je regarder vos fichiers demain.

j'aurais plus de temps pour bien comprendre et adapter à mon fichier d'origine...

je vous tiens au courant de mes évolutions.

merci
A+
 

Habitude

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

Rebonjour à Tous

Thierry on s'est mal compris je pense

Tout ses listsubitems.add avec Offset sont justifiable.

ce que je n'aime pas, c'est ton utilisation du .listitems.Count
Car si tu ajout un élément en plein milieu de la liste, les subtitems vous être décalé.

La fonction Add d'une listview retourne un Objet ListItem.
Que tu peux associé a une variable ListItem avec un Set
ou encore L'utilisé avec un With.
Ce qui est plus performant et surtout plus juste.

Bref.

Code:
With Me.ListView1
 with .ListItems.Add(, , WS.Name)
 .ListSubItems.Add , , Cell.Offset(0, -4)
 .ListSubItems.Add , , Cell.Offset(0, -3)
 .ListSubItems.Add , , Cell.Offset(0, -2)
 .ListSubItems.Add , , Cell
 .ListSubItems.Add , , Cell.Offset(0, 3)
 .ListSubItems.Add , , Cell.Value - Cell.Offset(0, 3)
 End With
End With

Dans ton nouveau code je mettrais ceci, ca évite un déplacement a chaque ajout de subItems

Code:
For i = LBound(TabDataArray, 2) To UBound(TabDataArray, 2)
            With Me.ListView1.ListItems.Add(, , (TabDataArray(0, i)))
                For x = 1 To UBound(TabDataArray, 1)
                    .ListSubItems.Add , , (TabDataArray(x, i))
                Next
            End With
'         y = y + 1
         Next
 
Dernière édition:

regnum

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

bonsoir a tous

avec tous ces codes ,j'ai eu du fil à retordre...;)
j'ai bien compris le premier code de thierry,simple et éfficace pour mon utilisation.je l'ai adapté sans difficulter à mon fichier et même fais une deuxième listview avec ce code:
Code:
 Dim WS As Worksheet
Dim WB As Workbook
Dim Cell As Range, Plage As Range
Set WB = ThisWorkbook  
With ListView2
        'affichage en mode "Détails"
        .Font.Bold = True
        .View = 3    'lvwReport
        .Gridlines = True
        .LabelEdit = 1    'Pour "Locked" la ListView
        With .ColumnHeaders
            .clear
            .Add , , "Famille", 60
            .Add , , "référence", 100
            .Add , , "désignation", 100
            .Add , , "fournisseur", 80
           ' .Add , , "facture", 80
            .Add , , "QTE", 30
            .Add , , "CDE...", 70
            .Add , , "Date CDE", 60
            .Add , , "QTES CDE", 50
            .Add , , "stock mini", 60
            .Add , , "nom technicien", 90
        End With
    End With
For Each WS In WB.Worksheets
Set Plage = WS.Range(CEL_ADDRESS)
 For Each Cell In Plage
If Cell.Value = "En commande" Then
With Me.ListView2
 .ListItems.Add , , WS.Name
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -7)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -6)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -5)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, -3)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, 1)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, 2)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, 3)
 .ListItems(.ListItems.Count).ListSubItems.Add , , Cell.Offset(0, 4)
 '.ListSubItems.Add , , Cell.Value - Cell.Offset(0, 3)

End With
End If
Next Cell
Next WS

qui m'alimente une listview que quand les cellule de la colonne H est écrie "En commande".

les aures codes sont relativement compliqués pour moi (manque d'experience...lol):p

j'ai pas toute à fais fini.
je vous tiens au courant.:rolleyes:

A+
 

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus