Bonjour,

Je cherche a extraire des valeurs d'un automate grâce à l'AddIn Aspentech et à les stocker dans un tableau. (code ci-dessous)

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
 
Sub FPPI()
'
' FPPI Macro
'
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
 
    Dim Hist As Date, pas As Date, nbboucle As Integer, FPPI As Integer, RCP() As Variant
 
 
 
    Hist = InputBox("Depuis quand voulez-vous l'historique ?", "Historique", Date)
    pas = InputBox("Quel pas voulez-vous ?", "Pas", "00:10")
 
 
    nbboucle = (now() - Hist) / pas                 'Calcul du nombre de valeur à extraire
    Range("A1:I60000").ClearContents
    FPPI = 0
 
 
    For i = 1 To nbboucle
 
        ReDim Preserve RCP(i)
 
        RCP(i) = ATGetTimeVal("GG1RCP955EU-", "", "", Hist, 16, 0, 0)               'Extraction de la valeur et stockage dans la ligne "i" du tableau
 
        If RCP(i) < 92 And RCP(i) > 2 Then: FPPI = FPPI + 1
 
        Hist = Hist + pas
 
    Next
 
    Range("D1") = "Cumul FFPI"
    Range("D2") = FPPI
 
 
End Sub
Le problème est à la ligne 28 (If RCP(i) < 92 And RCP(i) > 2 Then: FPPI = FPPI + 1), il me met un message d'erreur incompatibilité de type. Après analyse, il s'avère que la formule AtGetTimeVal renvoie une matrice avec du texte. Je ne sais pas comment transformer le texte en nombre pour pouvoir faire des conditions/opérations etc...
J'ai utilisé =val(), Cdbl,...

La seul solution que j'ai trouvé est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
For i = 1 To nbboucle
 
        ReDim Preserve RCP(i)
 
        RCP(i) = ATGetTimeVal("GG1RCP955EU-", "", "", Hist, 16, 0, 0)               'Extraction de la valeur et stockage dans la ligne "i" du tableau
        Range("A1") = RCP(i)                                                                           'Copie de RCP(i) dans la cellule A1
        If Range("A1")  < 92 And Range("A1") > 2 Then: FPPI = FPPI + 1
 
        Hist = Hist + pas
 
    Next
Avec cette solution pas d'incompatibilité de type et il incrémente bien FPPI. Le problème, c'est la différence de rapidité de calcul, avec la première méthode une extraction de 10000 valeurs prend 1/10eme de seconde alors que la seconde presque une minute...

Est ce que quelqu'un connait une solution pour manipuler RCP(i) avec des If ou des opérations ?

Merci d'avance ! :-)