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 données ListView


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut Tri données ListView
    Bonjour tout le monde,

    Je charge une ListView avec des données stockées dans un fichier .Csv avec
    le code ci-dessous, maintenant je cherche à trier cette listview par ordre alphabétique
    de la 2ème colonne, dès son alimentation, vu que les données de la listview sont modifiées
    dès la saisie d'un autre caractère dans la Cbx,

    Mais je ne sais pas trop comment faire ça depuis un fichier csv

    Auriez-vous une solution pour faire ce tri ??

    Par avance merci et bon week-end


    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    Sub ChargCbxRec()
     
    ' ---------------
    ' Remplir la LVW1
    ' ---------------
    Dim NbreCar As Integer
    Dim myFso As Object, StoCsv As Object, CsvLine As String
    Dim I As Long
    Dim LigneTexte  As String
    Dim ColonneTexte As Variant
    Dim Ligne As ListItem
    Dim J As Integer
     
    On Error Resume Next
     
    Set myFso = CreateObject("Scripting.FileSystemObject")
     
    ' Gestion des erreurs
    ' -------------------
    If CbxDes = "" Then
        UsfRec.CBX2.SetFocus
        Exit Sub
    End If
     
    ' Nombre de caractères dans la CBX2
    ' ----------------------------------
    NbreCar = Len(CbxDes)
     
    ' Vider la ListView
    ' -----------------
    UsfRec.LVW1.ListItems.Clear
     
    ' Définit le fichier de recherche
    ' -------------------------------
    Set StoCsv = myFso.OpenTextFile("C:\ARCHIVES\STOCK.csv", 1)
     
    ' Boucle de recherche
    ' -------------------
    While Not StoCsv.AtEndOfStream
     
    ' Stockage des données lues
    ' -------------------------
        CsvLine = StoCsv.ReadLine
     
    ' Conditions de recherche
    ' -----------------------
        If Left(Split(CsvLine, ";")(1), NbreCar) = CbxDes Then
            If Split(CsvLine, ";")(4) = ChoixRecherche Then
                J = J + 1
     
    ' Remplir la LVW1
    ' --------------------
                ColonneTexte = Split(CsvLine, ";")
                Set Ligne = UsfRec.LVW1.ListItems.Add(, , ColonneTexte(0))
     
                With UsfRec.LVW1
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(1)
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(2)
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(3)
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(4)
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(5)
                    .ListItems(J).ListSubItems.Add , , Split(CsvLine, ";")(6)
               End With
            End If
        End If
    Wend
     
    ' Fermeture du fichier lu
    ' -----------------------
    StoCsv.Close
     
    ' Remise à zéro des variables
    ' ---------------------------
    Set StoCsv = Nothing: Set myFso = Nothing: Set Ligne = Nothing
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    Bonjour,

    Une fois ta Listview chargée, tu peux la trier par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        LVW1.SortKey = 1       ' n° de colonne commençant à 0
        LVW1.SortOrder = 0     ' lvwAscending
        LVW1.Sorted = True

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    Bonjour micniv,

    Merci pour ton aide, je viens de tester ta solution
    les données sont bien triées dans la 1ere colonne mais l'affichage
    des autres colonnes a disparu sauf la dernière ligne qui est complète
    j'ai un autre problème, le tri est long à se faire, je dois avoir environ 3000
    lignes dans la ListView
    Une petite idée pour corriger ces problèmes ??
    Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    Re,

    je viens de tester en rajoutant la 1ere ligne et en supprimant la ligne True

    le tri n'est plus effectué mais j'ai bien toutes les colonnes d'affichées
    dès que je rajoute "LVW1.Sorted = True" il n'y a plus que la 1re colonne
    d'affichée sauf la dernière ligne qui est complète

    Avez vous une idée à ce problème ??
    merci à vous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        LVW1.Sorted = False
        LVW1.SortKey = 1       ' n° de colonne commençant à 0
        LVW1.SortOrder = 0     ' lvwAscending
        LVW1.Sorted = True

Discussions similaires

  1. Insertion de données triés dans listview
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/04/2007, 15h45
  2. [VBA-Excel] Tri de listview ne fonctionne pas avec des nombres à virgule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2006, 15h32
  3. [VBA-E] Tri de listview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/09/2006, 14h51
  4. Tri sur Listview
    Par Chacks dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/02/2006, 14h26
  5. [vb.net] données listview
    Par iamunknown dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/02/2006, 17h35

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