comment utiliser des plages variables dans différentes feuilles

J'ai écrit un code pour un produit entre 2 gammes. L'une de ces gammes est dans l'autre et quand j'ai essayé de la rendre variable, je me trompe. C'est le code:

Sub Correlacionar() Dim col As Integer Dim random As Range Dim SDesv As Range Dim Chole As Range col = 4 Set Chole = Sheet4.Range("a20:d23") 'Set Chole = Sheet4.Range(Cells(20, 1), Cells(19 + col, col)) Set random = Range(Cells(3, 9), Cells(3, 8 + col)) Set SDesv = Range(Cells(10, 1), Cells(10, col)) SDesv = WorksheetFunction.MMult(random, WorksheetFunction.Transpose(Chole)) Application.CutCopyMode = False End Sub 

Je veux utiliser:

 Set Chole = Sheet4.Range(Cells(20, 1), Cells(19 + col, col)) 

Au lieu de:

 Set Chole = Sheet4.Range("a20:d23") 

 Set Chole = Sheet4.Range(Sheet4.Cells(20, 1), _ Sheet4.Cells(19 + col, col)) 

Si vous utilisez simplement Cells, il se référera à la feuille de travail active, pas Sheet4.

Il est recommandé de ne jamais utiliser Range ni Cells sans un qualificatif de feuille de calcul spécifique. Votre code ne doit pas dépendre d'une feuille spécifique active.

Similaire à Ne peut pas fonctionner avec les plages si le classur et la feuille ne sont pas actifs

Les cellules se réfèrent implicitement à ActiveSheet.Cells

 with sheet4 set Chole = .range(.cells(20,1), cells(19 + cells(19 + col, col)) end with