XL 2010 re : combinaison a 5 chiffres

bruno731

XLDnaute Nouveau
Bonjour à tous
Je recherche un moyen de créer toutes les combinaisons possible avec 10 chiffres , j'ai trouver le fichier d'Adloule , merci à lui , il est prévue pour 12 chiffres, j'ai modifié la macro mais maintenant ,il sort aussi des 0, je ne trouve pas d'où cela peux venir.
Cela viens peux être de ma version 2010 d'excel.
Je voudrai aussi multiplier tout les chiffres dans une combinaison et ensuite additionner tout les multiples de ce chiffre jusqu'à ce qu'il n'en reste 1.
Ex : 59,67,72,95,99 -> 59x57x72x95x99 = 2676813480 -> 2+6+7+6+8+1+3+4+8+0=45 -> 4+5= 9 (chiffre a afficher)

Merci d'avance de votre aides.
 

Pièces jointes

  • toto2 (2).xls
    135.5 KB · Affichages: 44

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Bruno,
Votre liste N à 10 éléments.
Et comme E=A+4 quand A vaut Nt E vaut Nt+4 soit 14.
Donc j'ai dupliqué la matrice N jusqu'à 20, et j'ai modifié les indices de fin des variables.
VB:
Sub Toto()
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim E As Integer
Dim N(20) As Integer
Dim P As Integer
Nt = 10
For i = 1 To 10: N(i) = Cells(1, 9 + i): N(i + 10) = Cells(1, 9 + i): Next
P = 1
For A = 1 To Nt
    For B = A + 1 To Nt
        For C = B + 1 To Nt + 1
            For D = C + 1 To Nt + 2
                For E = D + 1 To Nt + 3
                    P = P + 1
                    Range("A" & P) = N(A)
                    Range("B" & P) = N(B)
                    Range("C" & P) = N(C)
                    Range("D" & P) = N(D)
                    Range("E" & P) = N(E)
                Next E
            Next D
        Next C
    Next B
Next A
End Sub
A tester. Mais au moins il n'y a plus de 0 dans la matrice.
 

Pièces jointes

  • toto2 (2).xls
    135.5 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonsoir bruno731, sylvanu,

Le nombre de combinaisons de 10 éléments pris 5 par 5 est égal à COMBIN(10;5) = 252.

La macro pour lister ces combinaisons :
VB:
Sub Combinaisons()
Dim P, n&, R(1 To 5), a%, b%, c%, d%, e%
P = Application.Transpose(Application.Transpose([J1:S1]))
n = 1
For a = 1 To 6
    R(1) = P(a)
    For b = a + 1 To 7
        R(2) = P(b)
        For c = b + 1 To 8
            R(3) = P(c)
            For d = c + 1 To 9
                R(4) = P(d)
                For e = d + 1 To 10
                    R(5) = P(e)
                    n = n + 1
                    Cells(n, 1).Resize(, 5) = R
 Next e, d, c, b, a
End Sub
A+
 

Pièces jointes

  • Combinaisons(1).xls
    39 KB · Affichages: 20

bruno731

XLDnaute Nouveau
Bonsoir Bruno,
Votre liste N à 10 éléments.
Et comme E=A+4 quand A vaut Nt E vaut Nt+4 soit 14.
Donc j'ai dupliqué la matrice N jusqu'à 20, et j'ai modifié les indices de fin des variables.
VB:
Sub Toto()
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim E As Integer
Dim N(20) As Integer
Dim P As Integer
Nt = 10
For i = 1 To 10: N(i) = Cells(1, 9 + i): N(i + 10) = Cells(1, 9 + i): Next
P = 1
For A = 1 To Nt
    For B = A + 1 To Nt
        For C = B + 1 To Nt + 1
            For D = C + 1 To Nt + 2
                For E = D + 1 To Nt + 3
                    P = P + 1
                    Range("A" & P) = N(A)
                    Range("B" & P) = N(B)
                    Range("C" & P) = N(C)
                    Range("D" & P) = N(D)
                    Range("E" & P) = N(E)
                Next E
            Next D
        Next C
    Next B
Next A
End Sub
A tester. Mais au moins il n'y a plus de 0 dans la matrice.


Bonjour sylvanu , merci de ton aide ,je vais tester
 

bruno731

XLDnaute Nouveau
Bonsoir bruno731, sylvanu,

Le nombre de combinaisons de 10 éléments pris 5 par 5 est égal à COMBIN(10;5) = 252.

La macro pour lister ces combinaisons :
VB:
Sub Combinaisons()
Dim P, n&, R(1 To 5), a%, b%, c%, d%, e%
P = Application.Transpose(Application.Transpose([J1:S1]))
n = 1
For a = 1 To 6
    R(1) = P(a)
    For b = a + 1 To 7
        R(2) = P(b)
        For c = b + 1 To 8
            R(3) = P(c)
            For d = c + 1 To 9
                R(4) = P(d)
                For e = d + 1 To 10
                    R(5) = P(e)
                    n = n + 1
                    Cells(n, 1).Resize(, 5) = R
Next e, d, c, b, a
End Sub
A+
Bonjour Job75, merci aussi pour ton aide ,je teste
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Si l'on veut aller vite il faut utiliser des tableaux VBA, voyez ce fichier (2).

Avec la liste des combinaisons bruno731 veut aussi le produit des éléments et le modulo 9 donc :
VB:
Sub Combinaisons()
Dim P, R(), a%, b%, c%, d%, e%, n&
P = Application.Transpose(Application.Transpose([J1:S1]))
ReDim R(1 To Application.Combin(10, 5), 1 To 8)
For a = 1 To 6
    For b = a + 1 To 7
        For c = b + 1 To 8
            For d = c + 1 To 9
                For e = d + 1 To 10
                    n = n + 1
                    R(n, 1) = P(a)
                    R(n, 2) = P(b)
                    R(n, 3) = P(c)
                    R(n, 4) = P(d)
                    R(n, 5) = P(e)
                    R(n, 7) = R(n, 1) * R(n, 2) * R(n, 3) * R(n, 4) * R(n, 5) 'produit des éléments
                    R(n, 8) = R(n, 7) Mod 9 'modulo 9
Next e, d, c, b, a
'---restitution---
[A2].Resize(n, 8) = R
End Sub
A+
 

Pièces jointes

  • Combinaisons(2).xls
    40.5 KB · Affichages: 16

job75

XLDnaute Barbatruc
Avec modulo 9 ce n'est pas 9 qui s'affiche mais zéro...
Si je voulais savoir combien de fois le chiffre 1 ou 2 ou ...9 et sorti ?
Utilisez la fonction NB.SI.
Si je voulais qu'il affiche uniquement les combinaisons qui donnent un résultat par ex : 9 ?
Filtrez (avec le filtre automatique) la colonne H sur la valeur désirée.
 

job75

XLDnaute Barbatruc
Dans ce fichier (3) la valeur en V1 permet de filtrer les combinaisons, la macro modifiée :
VB:
Sub Combinaisons()
Dim P, filtre$, R(), a%, b%, c%, d%, e%, n&
P = Application.Transpose(Application.Transpose([J1:S1]))
filtre = Replace(LCase([V1]), "tout", "")
If filtre = "" Then filtre = "*"
ReDim R(1 To Application.Combin(10, 5), 1 To 8)
For a = 1 To 6
    For b = a + 1 To 7
        For c = b + 1 To 8
            For d = c + 1 To 9
                For e = d + 1 To 10
                    n = n + 1
                    R(n, 1) = P(a)
                    R(n, 2) = P(b)
                    R(n, 3) = P(c)
                    R(n, 4) = P(d)
                    R(n, 5) = P(e)
                    R(n, 7) = R(n, 1) * R(n, 2) * R(n, 3) * R(n, 4) * R(n, 5) 'produit des éléments
                    R(n, 8) = R(n, 7) Mod 9 'modulo 9
                    If Not R(n, 8) Like filtre Then n = n - 1 'annule la ligne
Next e, d, c, b, a
'---restitution---
With [A2] '1ère cellule de restitution, à adapter
    If n Then .Resize(n, 8) = R
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 8).ClearContents 'RAZ en dessous
End With
End Sub
 

Pièces jointes

  • Combinaisons(3).xls
    43 KB · Affichages: 20

bruno731

XLDnaute Nouveau
Bonjour Backhandshop , je viens de tester ton fichier, pas mal non plus , par contre j'ai un bug lorsque j'utilise le bouton "afficher toutes les combinaisons", possible que cela vienne de ma version 2010.
Merci pour ton aide.

1607061453071.png
 

Discussions similaires

Réponses
4
Affichages
419
Réponses
0
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.