XL 2010 re : combinaison a 5 chiffres

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

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.
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Réponses
1
Affichages
649
Retour