Bonjour,

j'ai de nouveau un problème avec les types de variables Double... Comme je l'ai expliqué sur une précédente file, j'avais un code de départ avec une simple inégalité qui fonctionnait très bien avec des variables string. Seulement, je dois ici effectuer une division et on m'a expliqué que je devais utiliser des variables Double pour effectuer ma division. Seulement, maintenant le problème se situe au niveau de la définition de la variable " BidPriceBis" et surement aussi pour " AskPriceBis".

Les nombres contenues dans les cellules de la worksheet "Tickers" sont à 2 décimales, mais avec une seule décimale si la deuxième avait été 0.

Voici mon code. Est-ce que vous pourriez m'aider? J'ai vraiment du mal avec VBA pour l'instant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
Option Explicit
Dim lastId As Long
Dim offset As Long
Public runWhen As Double
Public Const RUN_INTERVAL_SECONDS = 1
Public Const CapitalAmount = 10000
Public Const ProfitBarrier = 20
Public Const RUN_WHAT = "Example1.ArbSearch"
Public Const OppLim = 0.05
 
 
 
Sub ArbSearch()
    Dim symbol As String
    Dim SecType As String
    Dim Exchange As String
    Dim BidPrice As Double
    Dim AskPrice As Double
    Dim BidPriceBis As Double
    Dim AskPriceBis As Double
    Dim logSuccess As Boolean
    Dim TickerRow As Integer
    Dim NumShares As Double
 
    For TickerRow = 8 To 87
 
        symbol = UCase(Worksheets("Tickers").Cells(TickerRow, 1).value)
        SecType = UCase(Worksheets("Tickers").Cells(TickerRow, 2).value)
        Exchange = UCase(Worksheets("Tickers").Cells(TickerRow, 7).value)
        BidPrice = CDbl(Worksheets("Tickers").Cells(TickerRow, 15).value)
        AskPrice = CDbl(Worksheets("Tickers").Cells(TickerRow, 16).value)
        BidPriceBis = CDbl(Worksheets("Tickers").Cells(TickerRow + 1, 15).value)
        AskPriceBis = CDbl(Worksheets("Tickers").Cells(TickerRow + 1, 16).value)
        NumShares = CapitalAmount / AskPriceBis
 
        If symbol = UCase(Worksheets("Tickers").Cells(TickerRow + 1, 1).value) And Exchange <> UCase(Worksheets("Tickers").Cells(TickerRow + 1, 7).value) Then
                If (BidPriceBis - AskPrice) * NumShares > ProfitBarrier Or (BidPrice - AskPriceBis) * NumShares > ProfitBarrier Then
        MsgBox symbol
        MsgBox BidPrice
        MsgBox AskPrice
        MsgBox BidPriceBis
        MsgBox AskPriceBis
        End If
    End If
 
    Next TickerRow
 
    startTimer ' schedule next run
End Sub
 
Sub startTimer()
    runWhen = Now + TimeSerial(0, 0, RUN_INTERVAL_SECONDS)
    Worksheets("Auto Orders").Range("X3").value = Format(runWhen, "yyyy-mm-dd hh:mm")
    Application.OnTime earliesttime:=runWhen, procedure:=RUN_WHAT, schedule:=True
End Sub
 
Sub stopTimer()
   On Error Resume Next
   Application.OnTime earliesttime:=runWhen, procedure:=RUN_WHAT, schedule:=False
   Worksheets("Auto Orders").Range("X3").value = "Stopped"
End Sub

Merci d'avance.