' Enumére les arrangements possibles d'un tableau ' values: Tableau contenant les éléments Public Sub Permutation(ByRef values() As Integer) Call PermutationRec(values, 0, UBound(values)) End Sub ' Enumére les arrangements possibles d'un tableau ' values: Tableau contenant les éléments ' start: Index de l'élément de départ Public Sub PermutationS(ByRef values() As Integer, ByVal start As Long) If start < LBound(values) Or start > UBound(values) Then Err.Raise 9 Else Call PermutationRec(values, start, UBound(values)) End If End Sub ' Enumére les arrangements possibles d'un tableau ' values: Tableau contenant les éléments ' start: Index de l'élément de départ ' length: Nombre d'éléments à prendre en compte Public Sub PermutationSL(ByRef values() As Integer, ByVal start As Long, ByVal length As Long) If start < LBound(values) Or start > UBound(values) Then Err.Raise 9 ElseIf length < 1 Or length > UBound(values) - start + 1 Then Err.Raise 9 Else Call PermutationRec(values, start, start + length - 1) End If End Sub Private Sub PermutationRec(ByRef values() As Integer, ByVal startpos As Long, ByVal endpos As Long) Dim i As Long, j As Long Dim tmp As Variant ' ToDo: Arrivée d'une permutation possible, ajoutez les instruction ici For i = startpos To endpos For j = i + 1 To endpos tmp = values(i) values(i) = values(j) values(j) = tmp Call PermutationRec(values, i + 1, endpos) values(j) = values(i) values(i) = tmp Next j, i End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.