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