une version plus optimisée
Bonjour
je te propose une version un peu plus optimisée bien que je n'ai pas testé je pense avoir restitué le travail souhaité
supprime toutes tes lignes que j'ai mis en comentaire et teste le :
Code:
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
| Sub Check_Package_Argentine()
Dim tablo50
'Dim cf As CashFlow
Dim sommeInterets
'dim packageNumber As Double
Dim i, j As Integer
'Set listeCF = New Collection
sommeInterets = 0
Application.ScreenUpdating = False
'passage en mode de calcul manuel
Application.Calculation = xlManual
Sheets("7-Argentine-OPU").Activate
ReDim tablo50(50, 2) '50 lignes et 2 colonnes
For i = 1 To 50
If Right(Cells(i, 9).Value, 3) = "AVA" Then
'Set cf = New CashFlow
' cf.packageNumber = Range("F" & i).Value
tablo50(i, 0) = Range("F" & i).Value
'cf.montant = Range("Y" & i).Value
'listeCF.Add cf
tablo50(i, 1) = Range("Y" & i).Value
End If
Next i
For i = 1 To UBound(tablo50)
For j = i + 1 To UBound(tablo50)
'montant(i) = cf(i).montant
' packageNumber(i) = cf(i).packageNumber
'montant(j) = cf(j).montant
'packageNumber(j) = cf(j).packageNumber
sommeInterets = 0
If tablo50(i, 0) = tablo50(i + 1, 0) And tablo50(i, 1) <> tablo50(i + 1, 1) Then
'If (packageNumber(i) = packageNumber(j) And cf(i).montant <> cf(j).montant) Then
'sommeInterets = sommeInterets + cf(i).montant + cf(j).montant
sommeInterets = sommeInterets + tablo50(i, 1) + tablo50(i + 1, 1)
'MsgBox "les intérêts du package argentine " & packageNumber(i) & " sont de " & sommeInterets
MsgBox "les intérêts du package argentine " & tablo50(i, 0) & " sont de " & sommeInterets
End If
Next j
Next i
End Sub |
ma version finale à optimiser
Je te joins ma version finale; dis moi ce que je peux optimiser au niveau du code.
Merci
Code:
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
| Sub Check_Package_Argentine()
Dim cf As CashFlow
Dim sommeInterets, packageNumber, verif As Double
Dim i, j, k As Integer
Set listeCF = New Collection
sommeInterets = 0
verif = 0
Application.ScreenUpdating = False
'passage en mode de calcul manuel
Application.Calculation = xlManual
Sheets("7-Argentine-OPU").Activate
i = 4
While Cells(i, 9).Value <> ""
If Right(Cells(i, 9).Value, 3) = "AVA" Then
Set cf = New CashFlow
cf.packageNumber = Range("F" & i).Value
cf.montant = Range("Y" & i).Value
listeCF.Add cf
End If
i = i + 1
Wend
For i = 1 To listeCF.Count
For j = i + 1 To listeCF.Count
If (listeCF(i).packageNumber = listeCF(j).packageNumber) Then
sommeInterets = 0
sommeInterets = sommeInterets + listeCF(i).montant + listeCF(j).montant
MsgBox "les intérêts du package argentine " & listeCF(i).packageNumber & " sont de " & sommeInterets
k = 4
While Sheets("1-OperationsDuJour").Range("I" & k).Value <> listeCF(i).packageNumber
k = k + 1
Wend
If Sheets("1-OperationsDuJour").Range("I" & k).Value = listeCF(i).packageNumber Then
verif = (Sheets("1-OperationsDuJour").Range("U" & k).Value) + sommeInterets
If Abs(verif) < 10 Then
MsgBox "L'opération argentine du package " & listeCF(i).packageNumber & " correspond bien aux opérations avances, la somme du forward et des intérêts de l'opération est égale à " & verif & "!"
Else
MsgBox "Il n'y a pas de correspondance entre l'avance argentine et le forward associé au numéro de package " & listeCF(i).packageNumber & ", la somme du forward et des intérêts de l'opération est égale à " & verif & "!, vérifiez manuellement!"
End If
End If
End If
Next j
Next i
End Sub |