J'essaie de garder une variable dans la feuille de calcul actuellement ouverte dans VBA. Jusqu'ici j'ai
Dim Active As Worksheet
Set Active = ActiveWorksheet
Pour une raison quelconque, cela me donne une erreur dans la dernière ligne, en disant Object required. Mon code ouvre une nouvelle feuille de calcul avec les données de la feuille active. Il me faut donc une variable pour tenir ma place dans la feuille de calcul actuellement active. Une idée pourquoi cela ne fonctionne pas correctement? Merci d'avance!
Vous devez utiliser ActiveSheet
au lieu de ActiveWorksheet
Je préfère ne pas utiliser ActiveSheet dans VBA, car si vous commencez à écrire un code utilisant plusieurs feuilles de calcul, vous risquez de ne pas être sûr de la pertinence lorsque vous tentez de déterminer lequel est lequel. Je préfère le suivant
dim ws as Worksheet
ws = Thisworkbook.Worksheets(1)
OR
ws = Thisworkbook.Worksheets("worksheet name")
La seule fois où j'utilise Activesheet maintenant, c'est quand j'ai besoin de code pour travailler sur n'importe quelle feuille de calcul, quel que soit son contenu, ce qui est très rare. Dans ce cas, comme indiqué ci-dessus, utilisez:
dim ws as Worksheet
ws = Thisworkbook.Activesheet
OR
ws = Activesheet
Pour moi, j'aime bien parler directement de la feuille de travail à laquelle je veux m'adresser en utilisant Feuille ("Feuille de travail").
Donc, si vous voulez prendre une information sur une feuille particulière, vous pouvez utiliser ceci:
Dim ExampleWorksheet as Worksheet
Dim Example as Integer
Example = Sheets("ExampleWorksheet").Cells(x,y)
Ainsi, vous vous débarrassez des problèmes avec des feuilles de calcul actives ou non actives.