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 :

Explications code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Explications code VBA
    Bonsoir,

    j'ai trouvé sur le site http://boisgontierjacques.free.fr/ ce dont j'avais besoin : un code vba excel pour construire une listbox multi-colonne avec tri possible de chaque colonne. Son code fonctionne parfaitement mais j'aimerai comprendre.
    J'aurai bien demandé à l'auteur mais je n'ai pas trouvé de contact sur son site.
    Voici donc le code qui me pose problème :
    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
    Sub tri(a(), gauc, droi, NbCol, colTri)        ' Quick sort
     ref = a((gauc + droi) \ 2, colTri)
     g = gauc: d = droi
     Do
         Do While a(g, colTri) < ref: g = g + 1: Loop
         Do While ref < a(d, colTri): d = d - 1: Loop
         If g <= d Then
           For c = 0 To NbCol - 1
             temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
           Next
           g = g + 1: d = d - 1
         End If
     Loop While g <= d
     If g < droi Then Call tri(a, g, droi, NbCol, colTri)
     If gauc < d Then Call tri(a, gauc, d, NbCol, colTri)
    End Sub
    Quelques précisions :
    "gauc" correspond à LBound(a,2) ; "droi" à UBound(a,2) et NbCol à UBound(a, 2) - LBound(a, 2) + 1.

    Je voudrai comprendre mais je n'y arrive pas du tout.
    Si quelqu'un y voit clair, merci de m'offrir la lumière

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Fais une petite recherche sur l'algorithme de tri QuickSort
    Wiki: Le tri rapide (en anglais quicksort) est un algorithme de tri inventé par C.A.R. Hoare en 19611 et fondé sur la méthode de conception diviser pour régner. Il est généralement utilisé sur des tableaux, mais peut aussi être adapté aux listes. Dans le cas des tableaux, c'est un tri en place mais non stable.
    Sinon, on pourra supprimer l'argument NbCol
    Écrit comme ceci, le code est plus lisible
    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
    Sub Tri(ByRef A As Variant, ByVal Gauche, ByVal Droite, ByVal ColTri As Integer)    ' Quick sort
    Dim G, D, Tmp, Ref
    Dim i As Integer
     
    Ref = A((Gauche + Droite) \ 2, ColTri)
    G = Gauche
    D = Droite
    Do
        Do While A(G, ColTri) < Ref
            G = G + 1
        Loop
        Do While A(D, ColTri) > Ref
            D = D - 1
        Loop
        If G <= D Then
            For i = LBound(A, 2) To UBound(A, 2)
                Tmp = A(G, i)
                A(G, i) = A(D, i)
                A(D, i) = Tmp
            Next i
            G = G + 1
            D = D - 1
        End If
    Loop While G <= D
    If G < Droite Then Call Tri(A, G, Droite, ColTri)
    If D > Gauche Then Call Tri(A, Gauche, D, ColTri)
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. Explication code VBA sur menu clic droit.
    Par Doutrick dans le forum IHM
    Réponses: 1
    Dernier message: 14/04/2013, 20h13
  2. [XL-2007] explication code VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2012, 20h39
  3. Explication code VBA svp
    Par Guns Of The Patriots dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/06/2008, 12h33
  4. explication code vba
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/04/2008, 09h01
  5. explication code vba
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/04/2008, 11h12

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