Liste de combinaisons

Bonjours à tous,

Je me permets de vous solliciter car j'ai à ma disposition un fichier permettant de calculer la répartition d'un portefeuille financier ideal pour 3 actions. Je cherche à pouvoir le faire pour 7. Dans ce fichier il y a 5000 lignes environ reprenant toutes les combinaisons possible pour les 3 actions (voir ci-dessous). Je souhaiterais donc pouvoir faire la meme chose avec 7 actions. Donc 7 colonnes.

Pourriez-vous s'il vous plait m'aider? Cela me rendrait grandement service.

Merci d'avance,

capture d ecran 2021 03 05 a 00 09 25

Bonsoir à tous

victorpop,

Tu ne couvres pas toutes les possibilités de 3 avec 101

0,1,2 0,1,3 0,1,4 etc

Pour couvrir toutes les possibilités de 3 il faut 166650 combinaisons...

et 17,199,613,200 combinaisons couvrant toutes les combinaisons avec 7

Espérant que tu as un monstre pour analyser tout ça

Bonne soirée !

Merci de votre réponse. Auriez-vous une idée ou une fonction permettant de me créer la liste automatiquement?

Bien à vous,

Bonsoir à tous

victorpop,

vois si cela te convient

Bonne soirée !

19victorpop.xlsm (18.36 Ko)

C'est exactement ca merci beaucoup. Je l'ai simplement que sur 3 colonnes et non 7. Est-il possible de le faire sur 7?

Merci d'avance

bonjour,

Voici une proposition ...

Si tu as de la patience et assez de mémoire (7 ^ 101 combinaisons possibles, parmi lesquelles il faut sélectionner celles qui totalisent 100, tu n'as pas assez de l'âge de l'univers) . Je pense qu'il serait plus efficace de nous indiquer ce que tu cherches à optimiser avec quelles contraintes.

Dim t$(1 To 1000000, 1 To 1), col&, sol&
Sub aargh()
    Erase t ' tableau pour recevoir 1000000 de résultats
    col = 0 'n° de colonne résultat en cours
    sol = 0 ' n° de solution de la colonne en cours
    combine 'on produit les combinaisons
    If sol > 0 Then 'affichage colonne de résultat résiduelle
        col = col + 1
        Cells(1, col).Resize(sol, 1) = t
    End If
End Sub
Sub combine(Optional n& = 1, Optional tot& = 0&, Optional s$ = "", Optional tt& = 100)
'sub récursive de génération des combinaisons, n=niveau (s'arrête au niveau 7), tot=total  jusqu'à présent, s=liste des %, tt=total à atteindre
    Dim st As Boolean
    os$ = s
    ot& = tot
    For i& = 0 To tt - tot
        s = s & i & "% "
        tot = tot + i
        st = False
        If tot = tt Then
            For j& = 1 To 7 - n
                s = s & "0% "
            Next j
            st = True
        ElseIf n = 6 And tot <= tt Then
            s = s & tt - tot & "% "
            st = True
        End If
        If st Then
            sol = sol + 1
            t(sol, 1) = s
            If sol = 1000000 Then
                col = col + 1
                Cells(1, col).Resize(sol, 1) = t
                sol = 0
            End If
        ElseIf tot < tt Then
            combine n + 1, tot, s
        Else
            Exit For
        End If
        s = os
        tot = ot
    Next i
End Sub
Rechercher des sujets similaires à "liste combinaisons"