Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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


Bonjour sylvanu , merci de ton aide ,je vais tester
 

bruno731

XLDnaute Nouveau
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

bruno731

XLDnaute Nouveau
Bravo, vraiment très rapide
Si je voulais savoir combien de fois le chiffre 1 ou 2 ou ...9 et sorti ?
Si je voulais qu'il affiche uniquement les combinaisons qui donnent un résultat par ex : 9 ?
Comment je devrai m'y prendre?
merci d'avance
 

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.

 

Discussions similaires

Réponses
4
Affichages
450
Réponses
0
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…