Bonjour

En VBA, pour manipuler une feuille de calcul donnée, il est souvent utile de créer une variable objet comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set MaFeuille = ActiveWorkbook.Worksheets("Feuil1")
Sur ce code, "Feuil1" correspond au nom de l'onglet de la feuille visible dans Excel.

Coté VBA Editor, il est possible d'utiliser le nom VBA de la feuille de calcul (qui par défaut est également Feuil1) et qui correspond à la propriété (Name) avec les parenthèses.

Jusqu'ici, j’utilise ce nom VBA de la feuille pour ne pas être tributaire du nom visible côté Excel comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Feuil2.Range("A1") = "test"
J'en arrive à ma problématique : comment déclarer une variable objet avec l'instruction set en utilisant le nom VBA de la feuille et pas le nom visible d'Excel ?

Cela me serait particulièrement utile lorsque je souhaite travailler sur d'autres classeurs que celui qui contient le code VBA et pour manipuler une des feuilles de celui-ci.

Exemple pour un classeur nommé Planning.xlsx avec une feuille nommé "Janvier" coté Excel (et coté VBA, la feuille est nommée F01) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Set MonClasseur = Workbooks("Planning.xlsx")
Set MaFeuille= MonClasseur.Worksheets("Janvier")
MaFeuille.Columns("D:D").Delete Shift:=xlToLeft
Comment remplacer ce code pour utiliser le nom VBA de ma feuille ?
Les lignes suivantes ne fonctionnent pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Set MonClasseur = Workbooks("Planning.xlsx")
Set MaFeuille= MonClasseur.F01 'erreur sur cette ligne
MaFeuille.Columns("D:D").Delete Shift:=xlToLeft

J'espère que ma demande est assez explicite.

Merci pour toute aide apportée.

DG