1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Sub combinaison()
Dim Nb() As Variant, Combi() As Integer, B1 As Integer, b2 As Integer
Dim L As Integer, P As Integer, binvalue As String
L = 0
ReDim Combi(4, 0)
' récupère les valeur des 10 chiffres
Nb = Range("A1:J1").Value
'Boucle dans les possibilité binaire
'31 = 0000011111
'992= 1111100000
For B1 = 31 To 992
'conversion et inversion du résultat dec -> bin
binvalue = StrReverse(Dec2Bin(B1))
'si le résultat contient 5* "1"
If Len(Replace(binvalue, "0", "")) = 5 Then
'redimensionne le tableau
ReDim Preserve Combi(4, L) 'Ligne dans le tableau
P = 0 ' colonne dans le tableau
'Boucle pour trans former les "1" en valeur de 1 à 10
For b2 = 1 To Len(binvalue)
'si = "1" on met la valeur correspondant au 10 nombres dans le tableau
If Mid(binvalue, b2, 1) = "1" Then
Combi(P, L) = Nb(1, b2)
P = P + 1
End If
Next
L = L + 1
End If
Next
'recopie dans la feuille du tableau
Range("A2").Resize(UBound(Combi, 2) + 1, UBound(Combi, 1) + 1) = Application.Transpose(Combi)
End Sub
'fonction de conversion Decimal en binaire
Function Dec2Bin(ByVal n As Long) As String
Do Until n = 0
If (n Mod 2) Then Dec2Bin = "1" & Dec2Bin Else Dec2Bin = "0" & Dec2Bin
n = n \ 2
Loop
End Function |
Partager