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
|
Sub Matrice()
Application.ScreenUpdating = False
Dim nbRow, NbOne, NbSysteme, NbTotalSysteme As Long
Dim I, J, K, R As Long
'Setup
NbSysteme = Sheets("setup").Cells(12, 11).Value 'Nbre de system.
NbTotalSysteme = Sheets("setup").Cells(9, 11).Value 'Nbre de system total to load.
'Total de sequences possible
nbRow = 2 ^ NbTotalSysteme
Sheets("Matrice").Range("A1").CurrentRegion.ClearContents
'affichage de la matrice
For I = 1 To NbTotalSysteme
NbOne = nbRow / (2 ^ I)
R = 1
For J = 1 To 2 ^ (I - 1)
Sheets("Matrice").Range(Sheets("Matrice").Cells(R, I), Sheets("Matrice").Cells(R + NbOne - 1, I)) = 1
Sheets("Matrice").Range(Sheets("Matrice").Cells(R + NbOne, I), Sheets("Matrice").Cells(R + NbOne * 2 - 1, I)) = 0
R = R + NbOne * 2
Next J
Next I
'Garder les séquences comprenant nbSysteme 0
For I = nbRow To 1 Step -1
plage = Sheets("Matrice").Range(Sheets("Matrice").Cells(I, 1), Sheets("Matrice").Cells(I, NbTotalSysteme))
R = Application.WorksheetFunction.Sum(plage)
If Not R = NbSysteme Then Sheets("Matrice").Rows(I).Delete
Next I
Application.ScreenUpdating = True
End Sub |
Partager