Algorithme de Heap en VBA

Bonjour,

J'aimerais effectué l'algorithme de Heap dans VBA,
Voici le code que j'ai fais. Le problème est que lorsque je le lance, il n'effectue pas les n factorielles permutations et en plus de cela, il effectue les permutations dans une seule cellule du range

Public [/contents/446-fichier-sub Sub] AlgoHeap()
Dim n As Integer
n = 6

    Dim i As Integer
    For i = 1 To n
        Range("Heap").Cells(i, 2) = Range("Affectations").Cells(i, 2)
    Next i
    
    i = 1
    While i < n
        If Range("Heap").Cells(2, i) < i Then
            If i Mod 2 = 0 Then
              Call Swap(Range("A").Cells(1, 1), Range("A").Cells(i, 1))
            Else
              Call Swap(Range("A").Cells(Range("Heap").Cells(i, 2), 1), Range("A").Cells(i, 1))
            End If
    
          Range("Heap").Cells(i, 2) = Range("Heap").Cells(i, 2) + 1
          i = 1
        Else
          Range("Heap").Cells(i, 2) = Range("Affectations").Cells(i, 2)
          i = i + 1
        End If
    Wend
End Sub




Public Function Swap(d As Integer, b As Integer)
    Dim temp As Integer
    temp = d
    d = b
    b = temp
End Function


Merci pour votre aide
Configuration: Windows / Chrome 72.0.3626.109

1 réponse

  1. Contributeur
    bonjour, quelle technique as-tu utilisé pour vérifier que ton code se comporte comme tu t'y attends?
    il me semble que ta fonction swap ne fait rien d'utile. je pense que tu devrais y travailler avec des range, pas avec des integer.
    exemple non testé:
    private Function Swap(d As range, b As range)
        Dim temp As Integer
        temp = d
        d = b
        b = temp
    End Function