Bonjour,
Je cherche a extraire des valeurs d'un automate grâce à l'AddIn Aspentech et à les stocker dans un tableau. (code ci-dessous)
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...
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
J'ai utilisé =val(), Cdbl,...
La seul solution que j'ai trouvé est la suivante :
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...
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
Est ce que quelqu'un connait une solution pour manipuler RCP(i) avec des If ou des opérations ?
Merci d'avance ! :-)
Partager