Bonjour
@RichardS , le Forum
Si tu regardes mes codes dans mes interventions, je déclare toujours tous mes objets WorkBook, WorkSheet, Range (etc) et je fais ensuite un Set d'Objet sur chacun.
Il est dans les "Best Practices" de procéder de la sorte quand on développe quelque chose de "sérieux" et surtout de pérenne pour faire face au plus grands nombres de cas de figures.
Il n'y a pas de "limitation". Beaucoup moins en tout cas que de NE PAS les déclarer et faire un Set clair et précis.
Tu dois imaginer que VBA interprète ainsi "tous les acteurs" en jeu dans l'algo quand on lui "explique" (dès le début du code) qui est qui et qui fait quoi avec les "bornes" bien définies pour chaque objet.
Maintenant ton exemple :
F.cells(1,1).select ne fonctionne pas
C'est idem que si tu ne fais PAS de déclaration de Variable et de Set, en tapant :
Workbooks("Test2.xlsm").Sheets("Feuil1").Cells(1,1).Select
Donc ça n'a rien à voir avec le Set d'Objet, c'est tout simplement que si cette "Feuil1" n'est pas actuellement la Feuille Active, tu ne peux pas demander à VBA de faire la sélection d'une cellule de cette dite feuille.
Et le fait de faire des Set d'objets "dans les règles de l'art" normalement évite au développeur d'avoir recours aux fameux "Select" qui ne font qu'alourdir et ralentir le Code. VBA peut travailler totalement "virtuellement" en ayant tout dans la RAM sans aller "voir physiquement" les cellules...
Si maintenant en fin de traitement, tu veux que l'utilisateur se retrouve sur une Cellule "X" il suffit d'expliquer à VBA avant :
With F
.Activate
.Cells(1,1).Select
End With
Bonne découverte du monde VBA
@+Thierry