Bonjour à tous,

Me revoilà avec mes problèmes ...
Dans mon document Excel, la Feuil2 récupère des données automatiquement depuis un automate.
J'ai mis en place des SetLinkOnData afin de savoir quand une donnée est mise à jour.
Ensuite je fais appel à une méthode qui me fait des traitement selon la valeur de la cellule en question.
Le problème c'est que quand j'ai une seule valeur qui change tout se passe bien mais quand j'en ai plusieurs plus rien ne va ...
J'ai remarqué quelque chose de bizarre aussi : quand j'ai une seule donnée qui change, la valeur retenue est celle qui était avant le changement.
J'ai l'impression que quand j'en ai plusieurs qui changent la valeur qui est retenue est celle après changement ...
Les valeurs par défaut sont 0 et quand elles changent elles peuvent prendre n'importe quelle valeur.

Voici le code utilisé dans le workbook:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
        'Temps d'arret pour P17
        ActiveWorkbook.SetLinkOnData "PROSERVR|'N2215'!Alarme17", "TempsArretP17"
 
        'Temps d'arret pour P19
        ActiveWorkbook.SetLinkOnData "PROSERVR|'N2215'!Alarme19", "TempsArretP19"
Les modules qui sont appelés, les variables non déclarées ici sont des variables globales.

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Public Sub TempsArretP17()
 
Dim S_P17 As Long, H_P17 As Long, M_P17 As Long
 
If pause = False Then
 
    If Range("B10").Value = 0 Then
 
        'Récupération de l'heure système
        TempsDepartArretP17 = Time
 
        'Incrémentation du nombre d'arret sur le poste
        cptNombreArretP17 = cptNombreArretP17 + 1
 
        'Ecriture de la variable dans le classeur
        Feuil3.Range("E19").Value = cptNombreArretP17
 
    ElseIf Range("B10").Value <> 0 Then
 
        'Récupération de l'heure système
        TempsArretArretP17 = Time
 
        'Calcul de la différence entre les 2 heures (exprimée en secondes)
        S_P17 = DateDiff("s", TempsDepartArretP17, TempsArretArretP17)
 
        'Conversion des secondes en Heures, Minutes, Secondes
        H_P17 = Int(S_P17 / 3600)
        M_P17 = Int((S_P17 - 3600 * H_P17) / 60)
        S_P17 = S_P17 - 3600 * H_P17 - 60 * M_P17
 
        'Fonction TimeSerial : conversion au format HH:MM:SS / Cumul du TempsArretTotal
        TempsArretTotalP17 = TempsArretTotalP17 + TimeSerial(H_P17, M_P17, S_P17)
 
        'Ecriture du temps dans la cellule F7 de la Feuille 3
        Feuil3.Range("F19").Value = TempsArretTotalP17
    End If
End If
 
End Sub
 
Public Sub TempsArretP19()
 
Dim S_P19 As Long, H_P19 As Long, M_P19 As Long
 
If pause = False Then
 
    If Range("B12").Value = 0 Then
 
        'Récupération de l'heure système
        TempsDepartArretP19 = Time
 
        'Incrémentation du nombre d'arret sur le poste
        cptNombreArretP19 = cptNombreArretP19 + 1
 
        'Ecriture de la variable dans le classeur
        Feuil3.Range("E19").Value = cptNombreArretP19
 
    ElseIf Range("B12").Value <> 0 Then
 
        'Récupération de l'heure système
        TempsArretArretP19 = Time
 
        'Calcul de la différence entre les 2 heures (exprimée en secondes)
        S_P19 = DateDiff("s", TempsDepartArretP19, TempsArretArretP19)
 
        'Conversion des secondes en Heures, Minutes, Secondes
        H_P19 = Int(S_P19 / 3600)
        M_P19 = Int((S_P19 - 3600 * H_P19) / 60)
        S_P19 = S_P19 - 3600 * H_P19 - 60 * M_P19
 
        'Fonction TimeSerial : conversion au format HH:MM:SS / Cumul du TempsArretTotal
        TempsArretTotalP19 = TempsArretTotalP19 + TimeSerial(H_P19, M_P19, S_P19)
 
        'Ecriture du temps dans la cellule F7 de la Feuille 3
        Feuil3.Range("F19").Value = TempsArretTotalP19
    End If
End If
 
End Sub
Qu'en pensez-vous ?
Merci par avance