Bonjour.

Est-ce que quelqu'un peut m'expliquer cette synthaxe?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TAB(n) = TAB(n - h): n = n - h
A quoi sert le ":" suivi d'une égualité?


J'ai récupérer un code pour faire un tri shell sur un tableau. Mon tableau a 3 colonnes. J'ai réussi à faire le tri sur la première colonne. Par contre, je n'arrive pas à trouver comment faire les inversions pour les 2 autres colonnes.

Voici le code :

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
    Dim m As Long, n As Long, h As Long, v As String
    Dim loBound As Long, upBound As Long
 
    loBound = 0
    upBound = NbAff
    h = loBound
 
    Do
        h = 3 * h + 1
    Loop Until h > upBound
 
    Do
        h = h / 3
        For m = h + 1 To upBound
            v = TAB_Affec(0, m): n = m
            Do While CStr(TAB_Affec(0, n - h)) > v
                TAB_Affec(0, n) = TAB_Affec(0, n - h): n = n - h
                If n <= h Then
                    Exit Do
                End If
            Loop
            TAB_Affec(0, n) = v
        Next m
    Loop Until h = loBound
La ligne qui me pose problème est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TAB_Affec(0, n) = TAB_Affec(0, n - h): n = n - h
Je ne comprends pas à quoi correspond le ": n = n - h". Je n'avais encore jamais vu cette synthaxe avec le ":" suivant une égalité.

Je serais tenté d'écrire un truc du tyle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
TAB_Affec(0, n) = TAB_Affec(0, n - h): n = n - h
TAB_Affec(1, n) = TAB_Affec(1, n - h): n = n - h
TAB_Affec(2, n) = TAB_Affec(2, n - h): n = n - h
pour que les 2 autres colonnes soient concernées par le tri et que les valeurs reste en correspondance avec celle de la première colonne mais cela ne fonctionne pas.

Quelqu'un peut m'aider? En tout cas, merci à ceux qui ont pris le temps de lire mon sujet.

Bonne journée.

Emmanuel