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

VB 6 et antérieur Discussion :

trier tableau dynamique


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juin 2004
    Messages : 118
    Points : 48
    Points
    48
    Par défaut trier tableau dynamique
    Bonjour,

    comme le titre l'indique, je cherche une façon simple de trier un tableau dynamique qui contient le chemin de différents répertoires avec leur poids. Je voudrais que le tri se fasse sur le poids du répertoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Type Dossier
        nom As String
        Taille As Long
    End Type
    Aussi, je voudrais savoir comment supprimer des élémets de ce tableau dynamique
    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Peux-tu nous montrer la structure et la déclaration de ton tableau?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juin 2004
    Messages : 118
    Points : 48
    Points
    48
    Par défaut
    la structure du tableau, je vous l'ai donné, et la déclaration se fait ainsi :


    Dim Tableau(0 To 100) As Dossier
    Tableau(i).nom = sousdossier
    Tableau(i).Taille = Taille

    voila...

  4. #4
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Dans ce cas, tu peux utiliser un tri rapide :

    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
    Private Function TriRapide(Tableau() As Dossier, BorneInf As Long, BorneSup As Long) As Long
        Dim IndexPivot As Long
        Dim Pivot As Dossier
        Dim Inf As Long
        Dim Sup As Long
     
        'Fin de la récursivité
        If BorneInf >= BorneSup Then Exit Function
     
        'Choix du pivot : pifomètre. La meilleur valeur étant la valeur médiane.
        Randomize
        IndexPivot = BorneInf + (BorneSup - BorneInf) * Rnd()
        Pivot = Tableau(IndexPivot)
     
        'Remontée de la première valeur
        Tableau(IndexPivot) = Tableau(BorneInf)
     
        'Initialisation des variables de parcours
        Inf = BorneInf
        Sup = BorneSup
     
        Do
            Do While Tableau(Sup).Taille >= Pivot.Taille
                Sup = Sup - 1
                If Sup <= Inf Then Exit Do
            Loop
     
            If Sup <= Inf Then
                'Toutes les valeurs à gauche du pivot sont <= au pivot
                'Toutes les valeurs à droite du pivot sont >= au pivot
                Tableau(Inf) = Pivot
                Exit Do
            End If
     
            Tableau(Inf) = Tableau(Sup)
     
            Inf = Inf + 1
            Do While Tableau(Inf).Taille < Pivot.Taille
                Inf = Inf + 1
                If Sup <= Inf Then Exit Do
            Loop
     
            If Sup <= Inf Then
                Inf = Sup
                Tableau(Sup) = Pivot
                Exit Do
            End If
     
            Tableau(Sup) = Tableau(Inf)
        Loop
     
        TriRapide Tableau(), BorneInf, Inf - 1
        TriRapide Tableau(), Sup + 1, BorneSup
    End Function
    Pour appeler la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TriRapide Tableau, LBound(Tableau), UBound(Tableau)

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Trier un tableau dynamique
    Par hehee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2013, 15h50
  3. [PHP] trier un tableau dynamiquement
    Par caro. dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 31/01/2006, 17h08
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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