Bonjour à tous
je sollicite votre aide car je n'arrive pas à résoudre un problème avec un de mes codes. Dans le cadre de mon activité, j'utilise PI DataLink et ai rédigé un code qui me permet de mettre à jour les plages de données liées à PI.
Mon problème est qu'à chaque exécution du code, je vois le changement de feuille (de TDB à Datas, actualisation de splages puis retour à la feuille TDB) et ce, malgré Application.Screenupdating = False.
Je comprends que le problème vient des ".select" pour sélectionner la première cellule de la plage de données PI mais je ne sais pas comment ne pas les utiliser.
Ci-dessous mon code :
Le problème vient donc de cette partie de code mais comme je le disais je ne sais pas comment ne pas utiliser les .Select des With MyRange1 etc
En espérant que l'un de vous connaisse PI Data Link et puisse m'aider.
Bonne soirée
je sollicite votre aide car je n'arrive pas à résoudre un problème avec un de mes codes. Dans le cadre de mon activité, j'utilise PI DataLink et ai rédigé un code qui me permet de mettre à jour les plages de données liées à PI.
Mon problème est qu'à chaque exécution du code, je vois le changement de feuille (de TDB à Datas, actualisation de splages puis retour à la feuille TDB) et ce, malgré Application.Screenupdating = False.
Je comprends que le problème vient des ".select" pour sélectionner la première cellule de la plage de données PI mais je ne sais pas comment ne pas les utiliser.
Ci-dessous mon code :
VB:
Sub Refresh()
Dim addIn As COMAddIn
Dim automationObject As Object
Dim wsDatas As Worksheet
Dim wsTDB As Worksheet
Dim MyRange1 As Range
Dim MyRange2 As Range
Set addIn = Application.COMAddIns("PI DataLink")
Set automationObject = addIn.Object
Set wsDatas = ThisWorkbook.Worksheets("DATAS")
Set wsTDB = ThisWorkbook.Worksheets("TDB")
Set MyRange1 = wsDatas.Range("R30")
Set MyRange2 = wsDatas.Range("T30")
Application.ScreenUpdating = False
wsTDB.Range("P1").Calculate
wsTDB.Range("P2").Calculate
wsDatas.Range("A1:B2,C2:V2").Calculate
wsTDB.Range("A11:B22").Calculate
wsDatas.Range("B4:B16").Calculate
If (Left(Worksheets("TDB").Range("P1"), 4) = "BT >") Then
'Application.ScreenUpdating = False
With wsDatas
.Select
With MyRange1
.Select
automationObject.SelectRange
automationObject.ResizeRange
End With
With MyRange2
.Select
automationObject.SelectRange
automationObject.ResizeRange
End With
End With
wsTDB.Select
Else
End If
Application.Calculation = xlCalculationAutomatic
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = True
End Sub
Le problème vient donc de cette partie de code mais comme je le disais je ne sais pas comment ne pas utiliser les .Select des With MyRange1 etc
Code:
With wsDatas
.Select
With MyRange1
.Select
automationObject.SelectRange
automationObject.ResizeRange
End With
With MyRange2
.Select
automationObject.SelectRange
automationObject.ResizeRange
End With
End With
wsTDB.Select
En espérant que l'un de vous connaisse PI Data Link et puisse m'aider.
Bonne soirée