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