ListView

Signaler
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Salut !

Y a t-il un moyen de faire afficher qu'une seule et unique extension de fichier dans un ListView ?
Je voudrais faire afficher l'extension *.mdb
Avez vous une idée svp ?

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !

9 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
Salut,

C'est pas le listview qui décide, mais le code qui le remplis...

Si on ne sait pas de quoi est composé ton code on ne pourra pas t'aider,
poste-le ici.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Voici le lien du code que j'étudie en ce moment :
http://www.vbfrance.com/code.aspx?ID=23514
Deux formulaires et un module.
Merci pour ton aide Mayzz
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
Arf, j'ai pas vb6 sous la main, j'suis sur un poste en x64 la...

Du coup je peu pas bien t'aider, d'après ce que je vois c'est du fso, donc il doit y avoir un fso.GetFiles quelque part...

Essaye un filtre genre

if lcase(right(File.Filename,3)) = ".mdf" then...

File étant le fichier traité par le Fso.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,

comme souvent, tout est présent sur codyx.org


Option Explicit

Private Sub Form_Load()
    With ListView1
        .LabelEdit = lvwManual
        .FullRowSelect = True
        .View = lvwReport
        .GridLines = False
        .ColumnHeaders.Add 1, , "Fichiers MDB"
        .ColumnHeaders(1).Width = .Width - 60
    End With
    
    
    Dim aResultat() As String
    Dim i As Long
    For i = 0 To GetFilesPathFromDirectory("C:\Windows", aResultat(), "*.mdb")
        AppendLineToLV ListView1, aResultat(i)
    Next i
    Erase aResultat
End Sub



'http://www.codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx#688
Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
'   GetFilesPathFromDirectory retourne -1 si aucun fichier  trouvé
'   sinon retourne la dimension du tableau,  donc NB fichiers -1 (tableau commence à l'indice 0)
'   init les résultats
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "" Then sDir = sDir & ""
'   formate le  chemin
    Dim sFile As String
    sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
'    boucle sur tous les fichiers
    Do
        If LenB(sFile) Then
            GetFilesPathFromDirectory = GetFilesPathFromDirectory + 1
            ReDim Preserve aRet(GetFilesPathFromDirectory)
            aRet(GetFilesPathFromDirectory) = sDir & sFile
            sFile = Dir
        End If
    Loop Until LenB(sFile) = 0
End Function



'http://www.codyx.org/snippet_ajouter-ligne-listview-items-multiples_794.aspx#2387
Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
    If (LV.ColumnHeaders.Count > 0) And (Not UBound(vasValues) = -1) Then
        Dim LI As ListItem
        Dim i As Integer
        LV.ListItems.Add , , vasValues(0)
        Set LI = LV.ListItems.Item(LV.ListItems.Count)
        For i = 1 To UBound(vasValues)
            If i = LV.ColumnHeaders.Count Then Exit For
            LI.SubItems(i) = vasValues(i)
        Next i
        Set LI = Nothing
    End If
End Sub

++
[hr]
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut et merci pour votre aide.

Mayzz : La ligne fso.GetFiles n'existe pas dans le projet. Je n'ai donc pas pu faire mettre au load de mon formulaire la commande.

PCPT : Merci pour ton code mais il ne fonctionne pas malgré que je l'ai copié/collé comme donné ci-dessus.

Il n'y a pas d'autre moyens de faire afficher dans une ListView uniquement les fichier *.mdb comme le FileListBox.Pattern = "*.mdb" ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
il ne marche pas?... mais si

tu cherches dans le bon dossier?
j'ai mis c:\windows\, à toi de remplacer si nécessaire

For i = 0 To GetFilesPathFromDirectory(app.path & "", aResultat(), "*.mdb")
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut PCPT, non il ne m'affiche toujours pas ce dont j'ai besoin. Voici ton code ci-dessous.

Private Sub Form_Load()
With LstFiles
.LabelEdit = lvwManual
.FullRowSelect = True
.View = lvwReport
.GridLines = False
.ColumnHeaders.Add 1, , "Fichiers MDB"
.ColumnHeaders(1).Width = .Width - 60
End With

Dim aResultat() As String
Dim I As Long
For I = 0 To GetFilesPathFromDirectory(App.Path & "", aResultat(), "*.mdb")
AppendLineToLV LstFiles, aResultat(I)
Next I
Erase aResultat
End Sub

Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "" Then sDir = sDir & ""
    Dim sFile As String
    sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
    Do
        If LenB(sFile) Then
            GetFilesPathFromDirectory = GetFilesPathFromDirectory + 1
            ReDim Preserve aRet(GetFilesPathFromDirectory)
            aRet(GetFilesPathFromDirectory) = sDir & sFile
            sFile = Dir
        End If
    Loop Until LenB(sFile) = 0
End Function

Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
    If (LV.ColumnHeaders.Count > 0) And (Not UBound(vasValues) = -1) Then
        Dim LI As ListItem
        Dim I As Integer
        LV.ListItems.Add , , vasValues(0)
        Set LI = LV.ListItems.Item(LV.ListItems.Count)
        For I = 1 To UBound(vasValues)
            If I = LV.ColumnHeaders.Count Then Exit For
            LI.SubItems(I) = vasValues(I)
        Next I
        Set LI = Nothing
    End If
End Sub


Je ne sais pas s'il me manque quelque chose ou si vous avez besoin du code de toute ma page pour m'aider à voir le problème.

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
un point d'arrêt sur aRet(GetFilesPathFromDirectory) = sDir & sFile, sFile est cohérent? ou tu n'entre pas dans la boucle?

si ok, point d'arrêt sur AppendLineToLV LstFiles, aResultat(I), aResultat(I) est cohérent?
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Au début, après le Load, sans le :
Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
...
End Function

et le :
Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
...
End Sub

Il y avait une erreur. Mais une fois que j'ai mis ces deux codes je n'ai plus d'erreurs. Mais il ne m'affiche toujours pas l'extension.