AIUTO ...... per EXCEL (1 Viewer)

FIB

Nuovo forumer
Brava Venere .... l'unione fa la forza....... mettiamoci ad urlare.... magari qualcuno prima o poi ci sentirà....
*
PS x venere....... che bel nick...... complimenti
 

FIB

Nuovo forumer
Ho copiato la macro.
Ho determinato i campi sulla base di quanto indicato nella macro.
Ma cìè qualcosa che non quadra.
Il valore numerico relativo alla riga devo aggiornarlo a mano
e per far andare avanti di una riga devo rilanciare la macro FIB.
Non mi riesce di rendelrla automatica....

Inoltre inserisco l'orario di quando deve conteggiarmi (Inizio fine contartti)
ma risulta ininfluente....

Pensi di potermi dare una mano?
1097180760a.png
 

FIB

Nuovo forumer
Questa è la prima macro denominata ControlloNotifica.....
*
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Const SND_FILENAME = &H20000
Private Const SND_ASYNC = &H1
Private Const SND_LOOP = &H8
Private Const SND_NODEFAULT = &H2


Private Sub Worksheet_Calculate()
ControlloNotifica 'richiama la macro in questione
'sull'evento Calculate del WorkSheet
End Sub
Sub ControlloNotifica()
Set WBook_Attuale = ThisWorkbook
Dim MioTesto As String
MioTesto = "T3_DDE_SERVER|T3_DDE_QUOTE_TOPIC!'CME.CEQFU.81100@last_price'*1"
'WBook_Attuale.SetLinkOnData "Formula di riferimento al titolo", "Macro richiamata"
WBook_Attuale.SetLinkOnData MioTesto, "foglio1.fib"
End Sub
---------------------------------------------------------------------

Questo è il collegamento al valore di prezzo in DDE
Ogni variazione di prezzo dovrebbe se non ho capito male lanciare la seconda macro che si chiama Fib
che è quella sotto indicata....
----------------------------------------------------
Sub fib()
Set cella = Foglio1.Cells(4, 2)
NoErrore = Not (IsError(cella))
If NoErrore Then
contratti = Foglio1.Cells(9, 3).Value 'lettura settaggio allarme contratti
contratti2 = Foglio1.Cells(15, 9).Value 'lettura settaggio allarme contratti istantaneo
numeroalert = Foglio1.Cells(9, 4).Value 'lettura settaggio n.alert contratti
inizioday = Foglio1.Cells(11, 2).Value 'lettura settaggio inizio contrattazioni
fineday = Foglio1.Cells(12, 2).Value 'lettura settaggio fine contrattazioni
orainizio = Foglio1.Cells(13, 2).Value ' lettura ora inizio registrazione barra
primariga = Foglio1.Cells(11, 3).Value ' lettura primariga
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progressivo = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
pausa = Foglio1.Cells(9, 2).Value ' lettura pausa
pausacist = Foglio1.Cells(15, 8).Value ' lettura pausa contratti istantaneo
ordine = Foglio1.Cells(17, 3).Value ' lettura Ordine
inserito = Foglio1.Cells(17, 4).Value ' lettura inserimento ordine
tipo = Foglio1.Cells(17, 5).Value ' lettura inserimento ordine
valtreal = Foglio1.Cells(4, 2).Value 'lettura titolo
qtaden = Foglio1.Cells(4, 5).Value 'lettura quantità denaro
preden = Foglio1.Cells(4, 6).Value 'lettura prezzo denaro
qtalet = Foglio1.Cells(4, 7).Value 'lettura quantità lettera
prelet = Foglio1.Cells(4, 8).Value 'lettura prezzo lettera

' variabili per la gestione della 2a serie
orainizio2 = Foglio1.Cells(13, 8).Value ' lettura iniziobarra 2a serie
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga 2a serie
pausa2 = Foglio1.Cells(9, 8).Value ' lettura pausa 2a serie
primariga2 = Foglio1.Cells(11, 9).Value ' lettura primariga serie 2
nr2 = 20
Set cella1 = Foglio1.Cells(17, 2)
NoErrore1 = Not (IsError(cella1))
End If
If NoErrore1 Then
titolo = Foglio1.Cells(17, 2).Value ' lettura titolo da ordinare
Else
titolo = 0
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If inserito = 1 Then
esito = ""
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2) = esito
Foglio1.Cells(18, 3) = esito
End If

If titolo > ordine And inserito = 1 Then
esito = ""
If tipo = -1 Then
vord = "C:\suoni\lasciato.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo

End If
End If
If titolo < ordine And titolo > 0 And inserito = 1 Then
esito = ""
If tipo = 1 Then
vord = "C:\suoni\preso.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo

End If
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If datatreal < orainizio Then
primariga = 0
Foglio1.Cells(11, 6).Value = 0
progriga = progriga + 1
Foglio1.Cells(20 + progriga, 1).Value = inizioday
Foglio1.Cells(20 + progriga, 2).Value = inizioday + pausa
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga

End If
If datatreal < orainizio2 Then
primariga2 = 0
Foglio1.Cells(11, 11).Value = 0
progriga2 = progriga2 + 1
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = inizioday
Foglio1.Cells(20 + progriga2, nr2 + 2).Value = inizioday + pausa2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet

Foglio1.Cells(13, 10).Value = progriga2
End If
If primariga = 0 Then
orainizio = inizioday
finebarra = inizioday + pausa
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(13, 2).Value = orainizio
Foglio1.Cells(13, 3).Value = finebarra
End If
If primariga2 = 0 Then
orainizio2 = inizioday
finebarra2 = inizioday + pausa2
Foglio1.Cells(13, 8).Value = orainizio2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If datatreal > inizioday Then
primariga = 1
primariga2 = 1
Foglio1.Cells(11, 9).Value = 1
Foglio1.Cells(11, 3).Value = 1
Else
primariga = 0
primariga2 = 0
Foglio1.Cells(11, 3).Value = 0
Foglio1.Cells(11, 9).Value = 0
Foglio1.Cells(11, 6).Value = 0
Foglio1.Cells(13, 6).Value = 0
Foglio1.Cells(15, 10).Value = inizioday

ControlloNotifica
End If

vol1 = Foglio1.Cells(11, 6).Value
vo2l1 = Foglio1.Cells(13, 6).Value
vol2 = Foglio1.Cells(20 + progriga, 3).Value
vo2l2 = Foglio1.Cells(20 + progriga2, nr2 + 3).Value
fibparlato = Foglio1.Cells(9, 6).Value
voltreal = Foglio1.Cells(4, 4).Value 'lettura volume
diff = voltreal - vol1
diff2 = voltreal - vo2l1
oracontratti = Foglio1.Cells(15, 10).Value
If datatreal > oracontratti Then
oracontratti = datatreal + pausacist
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(12, 6).Value = voltreal
End If
vol3 = voltreal - Foglio1.Cells(12, 6).Value
Foglio1.Cells(15, 11).Value = vol3

If primariga = 0 Then
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
End If

If fibarrotondato <> fibparlato Then
'inserimento prezzo
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
End If

If datatreal > (orainizio + pausa) Then
Sheets("Sistema").Select
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
Foglio1.Cells(11, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progriga = progriga + 1
iniziobarra = Foglio1.Cells(13, 3).Value
finebarra = iniziobarra + pausa
If finebarra >= fineday Then
finebarra = fineday
End If
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra
Foglio2.Cells(2, 1).Value = iniziobarra
Foglio2.Cells(2, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 1).Value = iniziobarra
Foglio1.Cells(20 + progriga, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio2.Cells(2, 3).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga ' lettura prograssivo riga
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra

End If
If datatreal > (orainizio2 + pausa2) Then
If progriga2 > 0 Then
denaro = Foglio1.Cells(20 + progriga2, nr2 + 10).Value
lettera = Foglio1.Cells(20 + progriga2, nr2 + 12).Value
tick = Foglio1.Cells(16, 9).Value
tickfuori = Foglio1.Cells(16, 10).Value
If valtreal > lettera Or valtreal = lettera Then
tickdiff = tick + diff2
End If
If valtreal < lettera And valtreal > denaro Then
tickfuori2 = tickfuori + diff2
tickdiff = tick
Foglio1.Cells(20 + progriga2 + 1, nr2 + 14).Value = diff2
Foglio1.Cells(16, 10).Value = tickfuori2
End If
If valtreal < denaro Or valtreal = denaro Then
tickdiff = tick - diff2
End If
End If
Foglio1.Cells(13, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga
progriga2 = progriga2 + 1
iniziobarra2 = Foglio1.Cells(13, 9).Value
finebarra2 = iniziobarra2 + pausa2
If finebarra2 >= fineday Then
finebarra2 = fineday
End If
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = datatreal
' Foglio1.Cells(20 + progriga2, nr2 + 1).Value = iniziobarra2
' Foglio1.Cells(20 + progriga2, nr2 + 2).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
If diff2 > contratti2 Then
ct = Foglio1.Cells(16, 11).Value
prct = Foglio1.Cells(14, 10).Value
ct1 = ct + diff2
Foglio1.Cells(16, 11).Value = ct1
Foglio1.Cells(20 + progriga2, nr2 + 15).Value = diff2
Foglio1.Cells(prct + 1, 42).Value = datatreal
Foglio1.Cells(prct + 1, 43).Value = valtreal
Foglio1.Cells(prct + 1, 44).Value = diff2
prlotti = prct + 1
Foglio1.Cells(14, 10).Value = prlotti
End If
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet
Foglio1.Cells(20 + progriga2, nr2 + 13).Value = tickdiff
Foglio1.Cells(16, 9).Value = tickdiff

Foglio1.Cells(13, 10).Value = progriga2 ' scrittura prograssivo riga
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If vol2 < contratti Then
nalert = 0
Foglio1.Cells(9, 5).Value = nalert
End If

If vol2 > contratti Then
nalert = Foglio1.Cells(9, 5).Value
If nalert <= numeroalert Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
nalert = nalert + 1
Foglio1.Cells(9, 5).Value = nalert
End If
End If
If vol3 > contratti2 Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
End If


If progriga > 0 Then
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio1.Cells(20 + progriga, 7).Value = valtreal
Foglio2.Cells(2, 8).Value = diff
Foglio2.Cells(2, 6).Value = valtreal
Min = Foglio1.Cells(20 + progriga, 6).Value
Max = Foglio1.Cells(20 + progriga, 5).Value
op = Foglio1.Cells(20 + progriga, 4).Value
If op = 0 Then
op = valtreal
Foglio1.Cells(20 + progriga, 4).Value = op
Foglio2.Cells(2, 3).Value = op
End If
If Min = 0 Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
If Max = 0 Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If

rminmax = Max - Min
Foglio1.Cells(20 + progriga, 8).Value = rminmax
Foglio2.Cells(2, 7).Value = rminmax
MediaRange = Foglio1.Cells(20 + progriga, 9).Value
Foglio2.Cells(3, 7).Value = MediaRange

If valtreal > Max Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If
If valtreal < Min Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
End If
If progriga2 > 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
Foglio1.Cells(20 + progriga2, nr2 + 7).Value = valtreal
Min2 = Foglio1.Cells(20 + progriga2, nr2 + 6).Value
Max2 = Foglio1.Cells(20 + progriga2, nr2 + 5).Value
fibr1 = Foglio1.Cells(20 + progriga2, 38).Value
fibr2 = Foglio1.Cells(20 + progriga2, 40).Value
' Foglio1.Cells(17, 44).Value = fibr1
'Foglio1.Cells(18, 44).Value = fibr2
op2 = Foglio1.Cells(20 + progriga2, nr2 + 4).Value
If op2 = 0 Then
op2 = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = op2
End If
If Min2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
If Max2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
rminmax2 = Max2 - Min2
Foglio1.Cells(20 + progriga2, nr2 + 8).Value = rminmax2
If valtreal > Max2 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
If valtreal < Min2 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
End If
End Sub
 

FIB

Nuovo forumer
Ho parzialmente gombinato.
Anche se mi rendo conto che la cosa è migliorabile.
Sulla base di quello che faceva la macro, ho inserito una piccola aggiunta
che posto sotto:
*
--------------------------------------------------

Sub Vai()
Dim i
i = 0
Do While 1
Dim PauseTime, Start, Finish, TotalTime
PauseTime = 0.5 ' Imposta la durata.
Start = Timer ' Imposta l'ora di inizio.
Do While Timer < Start + PauseTime
DoEvents ' Passa il controllo ad altri processi.
Loop
i = i + 1
fib
If i >= 120 Then
Cells(13, 4).Value = Cells(13, 4).Value + 1
i = 0
End If

Loop
End Sub
--------------------------------------------------------
il codice va inserito alla fine della macro evidenziata in precedenza.
In pratica sono due timer:
Il primo definisce ogni quanto tempo effettuare la lettura dei valori
e lanciare la MACRO---> FIB
------> PauseTime = 0.5 ' Imposta la durata.
la seconda condizione If i >= 120 Then stabilisce il time frame.
quindi in pratica ogni metà secondo legge i valori e lancia la macro FIB e ogni 2 minuti crea una nuova riga o candela se si applica un grafico.
-----------------------------------------------------------
Per interrompere la macro --> andare in Macro -->modifica---> ferma (quadratino.)
-----------------------------------------------------------
Spero che la cosa la sipossa scrivre in modo che il tutto si apiù leggibile..
 

Users who are viewing this thread

Alto