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 45 46 47 48 49 50 51 52 53 54 55
| Sub modu()
Dim i As Long
Dim j As Long
Dim k As Integer
Dim n As Integer
Dim vari() As Double
Dim fl As Integer
Dim val
Dim nbrligneparonglet As Long
Dim t_deb As Single, t_fin As Single, tpass As Single
t_deb = Timer
Sheets("feuil1").Range("B2").Select
'n variables
Range(Selection, Selection.End(xlDown)).Select
n = Selection.Rows.Count
'k Valeur
Range(Selection, Selection.End(xlToRight)).Select
k = Selection.Columns.Count
nbrligneparonglet = 60000
'on met suffisament d'onglet
If Sheets.Count < k ^ n \ nbrligneparonglet + 2 Then
Do While Sheets.Count < k ^ n \ nbrligneparonglet + 2
Sheets.Add after:=Worksheets(Worksheets.Count)
Loop
End If
'on remplie le tableau avec les valeur du n-uplet
ReDim vari(1 To n, 1 To k)
For i = 1 To n
For j = 1 To k
vari(i, j) = Feuil1.Cells(i + 1, j + 1)
Next j
Next i
'on ecrit les n uplet dans les différent onglet
For i = 0 To k ^ n - 1
For j = 0 To n - 1
fl = 1 + (i \ nbrligneparonglet) + 1
val = (i \ (k ^ j)) Mod (k) + 1
Sheets(fl).Cells(i + 1 - (fl - 2) * nbrligneparonglet, j + 1) = vari(j + 1, val)
Next j
Next i
t_fin = Timer
tpass = CSng(Round(t_fin - t_deb, 2))
MsgBox "Il faut " & tpass & " s pour générer " & k ^ n & " n-uplets"
End Sub |