Trouver toutes les combinaisons possible d'une série.

Icedarts

XLDnaute Occasionnel
Bonjour à tous,

J'ai une série de 18 chiffres (ça peut varier) de A1 à A18.
Je souhaiterai une petite macro qui me sortirait toutes les série de 5 chiffres possible.
Je me doute que cela doit en faire pas mal mais bon.
J'espère que c'est assez clair.

En pièce jointe un exemple.
Merci d'avance.
 

Pièces jointes

  • Classeur1.xls
    13.5 KB · Affichages: 727
  • Classeur1.xls
    13.5 KB · Affichages: 748
  • Classeur1.xls
    13.5 KB · Affichages: 738

hoerwind

XLDnaute Barbatruc
Re : Trouver toutes les combinaisons possible d'une série.

Bonsoir,

Question récurrente !

Regarde sous ta réponse : Discussions similaires
Si ce n'est pas suffisant, fais une recherche sous les anciens messages avec combinaison comme mot clef, tu y trouveras de nombreux exemples.
 

Icedarts

XLDnaute Occasionnel
Re : Trouver toutes les combinaisons possible d'une série.

J'ai posé la question car depuis cette après midi je farfouille sur le fofo mais toutes les solutions que je vois sont pour trouver des combinaisons qui donne un montant exact.
Merci pour la réponse.
 

ROGER2327

XLDnaute Barbatruc
Re : Trouver toutes les combinaisons possible d'une série.

Re...
Vous trouverez dans le classeur joint l'adaptation du code pour les combinaisons des éléments de la colonne A par 0, 1, 2, 3, 4, 5, 6, et 7. En comparant les procédures toto_2 à toto_7 vous verrez facilement les adaptations nécessaires.

Les procédures sont écrites sans souci excessif d'optimisation : vous trouverez peut-être des procédures plus subtiles pour atteindre les mêmes buts...​
ROGER2327
#2836
 

Pièces jointes

  • Combinaisons_2836.zip
    10.8 KB · Affichages: 1 028

Icedarts

XLDnaute Occasionnel
Re : Trouver toutes les combinaisons possible d'une série.

Je ne pense pas pouvoir faire mieux, je n'ai malheureusement pas le temps d'approfondir ce domaine qui est pourtant passionnant!!!!
Je bidouille 2-3 bricoles a force de demander de l'aide mais pas plus...
Je regarde le classeur, merci beaucoup!
 

ROGER2327

XLDnaute Barbatruc
Re : Trouver toutes les combinaisons possible d'une série.

Suite...
...à une demande reçue en message privé, je joins une version permettant des combinaisons de 8 ou 9 éléments.​


ℝOGER2327
#7544


Samedi 7 Absolu 142 (Saint Alambic, abstracteur - fête Suprême Quarte)
28 Fructidor An CCXXII, 4,4836h - maïs
2014-W37-7T10:45:38Z
 

Pièces jointes

  • Copie de Combinaisons_2836.xlsm
    31.1 KB · Affichages: 254

KenDev

XLDnaute Impliqué
Re : Trouver toutes les combinaisons possible d'une série.

Bonsoir Icedarts, bonsoir Roger,

Une alternative valable pour un nombre quelconque d'éléments (sous réserve que le nombre de combinaisons ne dépasse pas le nombre de lignes d'une feuille; revoir l'affichage sinon). La sub est à lancer depuis la feuille contenant les éléments possibles en colonne 1 depuis la ligne 1 sans blancs (comme dans le classeur exemple fourni).
Les éléments possibles peuvent être du texte.

VB:
Sub IceCombins()
    Dim t(), i&, j%, a%, b%, u%(), c%, v(), d&
    a = Cells(Rows.Count, 1).End(xlUp).Row
    ReDim t(1 To a)
    For i = 1 To a: t(i) = Cells(i, 1): Next i
    Do
        b = Application.InputBox(prompt:="1 - " & a & " ?", Type:=1)
        If b = 0 Then Exit Sub
    Loop Until b > 0 And b < a + 1
    u = CombinTab(a, b): c = UBound(u, 2): d = UBound(u): ReDim v(1 To c, 1 To d)
    If d > Rows.Count Then MsgBox "Le nombre de combinaisons dépasse le nombre de lignes d'une feuille.": Exit Sub
    For i = 1 To d: For j = 1 To c: v(j, i) = t(u(i, j)): Next j, i
    Erase t: Erase u: Sheets.Add: Range(Cells(1, 1), Cells(d, c)).Value = Application.Transpose(v)
End Sub
'----------------------------------------------------------------------------------------------------------------
'Tableau des combinaisons de b objets parmi a objets / pas de contrôles des entrées******************************
'----------------------------------------------------------------------------------------------------------------
Function CombinTab(ByVal a%, ByVal b%) As Integer()
    Dim n&, t%(), c%, i&, j&, d As Boolean: n = CombinNb(a, b): ReDim t(1 To n, 1 To b): c = a - b
    For i = 1 To b: t(1, i) = i: Next i
    For i = 2 To n
        If b = 1 Then t(i, 1) = t(i - 1, 1) + 1 Else t(i, 1) = t(i - 1, 1) - (t(i - 1, 2) = c + 2)
        For j = 2 To b - 1
            If Not (t(i - 1, j + 1) = c + j + 1) Then t(i, j) = t(i - 1, j) Else d = t(i - 1, j) = c + j: t(i, j) = t(i + Not d, j + d) + 1
        Next j
        If t(i - 1, b) = a Then t(i, b) = t(i, b - 1) + 1 Else t(i, b) = t(i - 1, b) + 1
    Next i
    CombinTab = t
End Function
'----------------------------------------------------------------------------------------------------------------
'Nb de combinaisons, b objets parmi a objets / pas de contrôles des entrées**************************************
'----------------------------------------------------------------------------------------------------------------
Function CombinNb(ByVal a%, ByVal b%) As Long
    Dim c%: c = a - b
    If b < c Then c = b
    If c = 0 Then CombinNb = 1 Else CombinNb = Factorielle(a, c) / Factorielle(c)
End Function
'----------------------------------------------------------------------------------------------------------------
'Factorielle, option: limiter le nombre d'itérations / pas de contrôles des entrées******************************
'----------------------------------------------------------------------------------------------------------------
Function Factorielle(ByVal f%, Optional n%) As Double
    Dim i&
    If n = 0 Then n = f
    Factorielle = 1
    If f > 0 Then
        For i = 0 To n - 1: Factorielle = Factorielle * (f - i): Next i
    End If
End Function
 

Pièces jointes

  • IceKD.xls
    46.5 KB · Affichages: 228

LPhilou

XLDnaute Junior
Re : Trouver toutes les combinaisons possible d'une série.

Re...
Vous trouverez dans le classeur joint l'adaptation du code pour les combinaisons des éléments de la colonne A par 0, 1, 2, 3, 4, 5, 6, et 7. En comparant les procédures toto_2 à toto_7 vous verrez facilement les adaptations nécessaires.

Les procédures sont écrites sans souci excessif d'optimisation : vous trouverez peut-être des procédures plus subtiles pour atteindre les mêmes buts...
ROGER2327

Samedi 7 Absolu 142 (Saint Alambic, abstracteur - fête Suprême Quarte)
28 Fructidor An CCXXII, 4,4836h - maïs
2014-W37-7T10:45:38Z

Bonjour Roger, j'aimerai une version de ce fichier mais avec les 18 chiffres (ou moins) sur une 1 ligne et non dans une colonne svp. Enfin j'ai regardé le code mais je ne vois pas comment changer le bouton 'au boulot' ? de plus quand je copie ce code dans une autre feuille (mode développeur) je n'ai plus rien, merci de m'indiquer comment copier ce code dans une autre feuille excel et personnaliser le bouton "au boulot", bonne journée, Ph.
 

Discussions similaires

Réponses
1
Affichages
121
Compte Supprimé 979
C

Membres actuellement en ligne

Statistiques des forums

Discussions
312 248
Messages
2 086 595
Membres
103 250
dernier inscrit
keks974