patricktoulon
XLDnaute Barbatruc
Bonjour à tous
j'ai une simple macro qui me permet de faire la liste de toute les combinaisons de 4 nombre sur 10
alors
oui elle fonctionne
oui elle ne me fait pas de doublons
oui elle est rapide
mais il y a un petit soucis
c'est qu'elle ne devrait pas
en effet j' ai 4 boucle imbriquées
chacune démarrant a l'index + 1 de la précédente et allant jusqu'au ubound c'est a dire à 10
arrivé a un moment la boucle a,b,c,d devrait me donner par exemple x 10 10 10 ce qui serait une combinaison erronée bien sur
mais voyez vous elle ne le fait pas
alors par quel miracle vbaistique divinatoire magical évènementiel mon résultat est correct
pour info je contrôle avec une fonction combin qui me donne bien 210 combinaisons possible et mes boucle me donnent la même chose
ais-je raté un épisode ?
y a que moi pour venir se plaindre que ça marche bien
j'ai une simple macro qui me permet de faire la liste de toute les combinaisons de 4 nombre sur 10
alors
oui elle fonctionne
oui elle ne me fait pas de doublons
oui elle est rapide
mais il y a un petit soucis
c'est qu'elle ne devrait pas
en effet j' ai 4 boucle imbriquées
chacune démarrant a l'index + 1 de la précédente et allant jusqu'au ubound c'est a dire à 10
arrivé a un moment la boucle a,b,c,d devrait me donner par exemple x 10 10 10 ce qui serait une combinaison erronée bien sur
mais voyez vous elle ne le fait pas
alors par quel miracle vbaistique divinatoire magical évènementiel mon résultat est correct
pour info je contrôle avec une fonction combin qui me donne bien 210 combinaisons possible et mes boucle me donnent la même chose
ais-je raté un épisode ?
VB:
Sub test()
[A:E].ClearContents
Dim tbl, tblFinal(), a&, b, c&, d&
ReDim tblFinal(1 To NbCombi(10, 4), 1 To 4)
tbl = Application.Index(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 1, 0)
For a = 1 To UBound(tbl)
For b = a + 1 To UBound(tbl)
For c = b + 1 To UBound(tbl)
For d = c + 1 To UBound(tbl)
q = q + 1
'Cells(q, 1).Resize(, 4) = Array(tbl(a), tbl(b), tbl(c), tbl(d))
tblFinal(q, 1) = tbl(a)
tblFinal(q, 2) = tbl(b)
tblFinal(q, 3) = tbl(c)
tblFinal(q, 4) = tbl(d)
Next d, c, b, a
Cells(1, 1).Resize(UBound(tblFinal), 4) = tblFinal
End Sub
Function NbCombi(Base#, N#)
'FORMULE PATRICKTOULON Developpez.com
NbCombi = WorksheetFunction.Combin(Base, N) ' avec worksheetfunction
End Function
y a que moi pour venir se plaindre que ça marche bien