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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
Dim tab_exemple()
Dim TotalFinal As Integer
Dim temp()
Dim longTemp As Integer
Dim Final()
Dim cellule As Integer
Sub Test1()
Dim zz As Integer
zz = Range("D1").Value
Dim derniere_ligne
derniere_ligne = Range("A1").End(xlDown).Row
ReDim tab_exemple(derniere_ligne - 1, 2)
ReDim Final(derniere_ligne - 1, 2)
cellule = 4
For i = 0 To derniere_ligne - 1
tab_exemple(i, 0) = i + 1
tab_exemple(i, 1) = Range("B" & i + 1)
Next
For i = 0 To derniere_ligne - 1
'Erase Final
Dim actu As Integer
actu = tab_exemple(i, 1)
Dim x
For u = i + 1 To UBound(tab_exemple)
tab_exemple(u - 1, 0) = tab_exemple(u, 0)
tab_exemple(u - 1, 1) = tab_exemple(u, 1)
Next
x = Multiplication(actu, zz, tab_exemple)
'MsgBox TotalFinal
If x Then
For f = 0 To UBound(Final) - 1
If Final(f, 0) <> "" Then
Range("D" & cellule).Value = Range("D" & cellule).Value & " " & Final(f, 1) & "haha"
End If
Next
End If
cellule = cellule + 1
Next
'Erase tab_exemple
End Sub
Function Multiplication(ByVal Actual As Integer, ByVal donnee As Integer, ByRef Tabl() As Variant) As Boolean
Dim longueur As Integer
longueur = UBound(Tabl, 1)
ReDim temp(longueur, 2)
Multiplication = False
For i = 0 To longueur
'Dim indice As Long
'On Error GoTo vide
' longTemp = UBound(tableau)
'vide: longTemp = 0
'Dim Tmp As Variant
'On Error Resume Next
'Tmp = UBound(temp)
'On Error GoTo 0
'If IsEmpty(Tmp) Then
' longTemp = 0
' Else
' longTemp = longTemp + 1
' End If
Dim valeur As Integer
Dim Line As Integer
valeur = Tabl(i, 1)
Line = Tabl(i, 0)
Dim ValMin
ValMax = 500000000
For Z = LBound(tab_exemple) + 1 To UBound(tab_exemple)
If tab_exemple(Z, 1) < ValMin Then ValMin = tab_exemple(Z, 1)
Next
If valeur + Actual < donnee + 10 And valeur + Actual > donnee - 10 Then
Actual = Actual + valeur
temp(longTemp, 0) = Line
temp(longTemp, 1) = valeur
TotalFinal = Actual
For t = 0 To longTemp
'If IsEmpty(Final(t, 1)) Then
Dim h
h = temp(t, 0)
Dim g
g = temp(t, 1)
Final(t, 0) = h
Final(t, 1) = g
'End If
Next
Multiplication = True
ElseIf valeur + Actual < donnee + 10 - ValMin Then
Actual = Actual + valeur
temp(longTemp, 0) = Line
temp(longTemp, 1) = valeur
For x = i + 1 To UBound(Tabl)
Tabl(Line - 1, 0) = Tabl(Line, 0)
Tabl(Line - 1, 1) = Tabl(Line, 1)
Next
If longTemp < UBound(Tabl) Then
longTemp = longTemp + 1
End If
'ReDim Preserve Tabl(UBound(Tabl))
Multiplication = Multiplication(Actual, donnee, Tabl)
End If
Next
'tab_exemple(1, 1) = "tata"
End Function |