Algorithme de Heap en VBA

Fermé
Talkme - Modifié le 21 févr. 2019 à 17:40
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 22 févr. 2019 à 09:18
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
A voir également:

1 réponse

yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
22 févr. 2019 à 09:18
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
0