IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tri dans une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Tri dans une listbox
    Bonjour à tous

    Avec le code ci-après j'importe dans une listbox les fichiers trouvés dans un répertoire et qui répondent à certains critères. Comment puis-je obtenir un tri alphabétique des fichiers apparaissant ainsi dans la listbox ?

    Merci de votre aide

    JLDpilot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    '-----------------------------------------------
    Private Sub UserForm_Initialize()
     
    Application.ScreenUpdating = False
        'intègre dans les listes déroulantes tous les fichiers Excel situés dans le répertoire "Mes Documents"
    monChemin = Application.DefaultFilePath
     
        Frame1.Caption = monChemin
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(monChemin)
     
        Set fc = f.Files
        For Each f1 In fc
            If Left(f1.Name, 7) = "EAS 04-" _
              And f1.Type = "Feuille de calcul Microsoft Excel" And Len(f1.Name) > 13 Then
     
            CboFiles.AddItem f1.Name
     
            End If
        Next
     
        CboFiles.ListIndex = 0
        CboFiles.SetFocus
        Application.SendKeys ("{F4}")
     
    Set fs = Nothing
    Set f = Nothing
    Set fc = Nothing
    Application.ScreenUpdating = True
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je crois que la solution la plus simple est d'affecter vos noms de fichiers dans une plage de cellules, de trier cette plage et d'affecter ensuite à votre ComboBox.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci. j'avais également pensé à cette manip. Mais il n'y aurait donc pas de commande "en direct" ?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    pourquoi ne pas utiliser plus simplement une ListView, qui, elle :
    - a une propriété Sorted
    - te permet d'afficher les dates de tes fichiers
    - te permet d'afficher leur taille
    - te permet même de trier par date (avec une colonne cachée supplémentaire)
    etc...
    Ce serait quand-même beaucoup plus propre !

    Je crois même qu'il m'est arrivé de donner un exemple sur ce forum (pas sûr) et sans utiliser FSO, en plus !

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    Tu peux stocker les fichiers dans un tableau, y appliquer un tri et alimenter la listbox ensuite ( propriété List() ).

    Un exemple qui tri par date de création:
    Comment lister les fichiers d'un répertoire par ordre décroissant de date de création ?



    Par listView comme proposé par ucfoutu:

    http://silkyroad.developpez.com/VBA/ListView/#LII-I
    "exemple liste les fichiers d'un répertoire ainsi que certaines de leurs propriétés."

    ftp://ftp-developpez.com/silkyroad/f...tViewExcel.zip



    bonne journée
    michel

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci ucfoutu mais j'avoue que je suis largué !
    comment une listview ? sans FSO ????

    Ici j'utilise une combobox pour permettre à l'utilisateur d'y rechercher un fichier particulier. La liste pouvant être longue j'aurai souhaiter que ces fichiers soient classés par ordre alpha !

    Désolé mais je ne possède pas ton niveau pour comprendre ces abréviations.

    Merci pour l'éclairage

    Jean-Luc

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ma dernière réponse s'est en fait croisée avec celle de Michel !
    Je me suis donc inspiré du premier lien qu'il m'a indiqué et obtenu la création d'un tableau (enfin je pense si j'en juge par le contenu de l'espion express !).
    Ce tableau ne reprend en fait que le nom du fichier (seule info qui m'intéresse)

    Mais maintenant je coince
    1) sur la façon d'en trier le contenu par ordre alpha puis
    2) sur la méthode pour l'incorporer à ma combobox afin que l'utilisateur puisse faire sa sélection unique avant de valider la boîte de dialogue - userform (Michel parle de List !!!!!!!).

    Enfin je suis content de l'exemple de Michel qui m'a fait avancer mais reste encore un bout de chemin !!!!!

    Merci de votre aide
    Jean-Luc

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Rebonjour


    Une adaption avec une listBox :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Option Explicit
    Option Compare Text
    Option Base 1
     
    Private Sub CommandButton1_Click()
        Dim Fichier As String, Chemin As String
        Dim Tableau()
        Dim m As Integer, i As Integer
        Dim Valeur As Byte
        Dim Cible As String
     
        '---liste les fichiers du répertoire ---
        Chemin = "C:\Documents and Settings\mimi\dossier"
        Fichier = Dir(Chemin & "\*.*")
        'pour filtrer sur un type de fichiers (par exemple xls)
        'Fichier = Dir(Chemin & "\*.xls")
     
        'Boucle sur les fichiers
        Do
            m = m + 1
            ReDim Preserve Tableau(m)
            Tableau(m) = Fichier
     
            Fichier = Dir
        Loop Until Fichier = ""
     
     
        '---Trie les fichiers par ordre alphabétique ---
        Do
            Valeur = 0
            For i = 1 To m - 1
                If Tableau(i) > Tableau(i + 1) Then
                    Cible = Tableau(i)
                    Tableau(i) = Tableau(i + 1)
                    Tableau(i + 1) = Cible
     
                    Valeur = 1
                End If
            Next i
        Loop While Valeur = 1
     
     
        '--- Transfère les données dans la ListBox ---
        ListBox1.List() = Tableau()
     
    End Sub


    bon après midi
    michel

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci Michel ça marche super !

    Jean-luc

    Bonne fin de journée en France ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Faire en sorte d'insérer des données triées dans une ListBox.
    Par EtherniTy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/09/2010, 13h35
  2. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo