Bonjour EvelyneetFrançois, Pascal76, Charly2
Oui Charly2, tu es clair (même tard le soir…), Non ça ne dépend pas que d’ Excel97….En V2000, c’est pareil, 2002 je ne sais pas, Il se peut que V2003 ça ait changé ? C’est le rapport Select/Activate, ils se battent peut-être à qui doit avoir la priorité sur l’autre ?
Mais comment une question simple peut l’être bien moins qu’elle paraît…
Ton code ressemble fort à ce que construit l’enregistreur de macro…. Qui est un petit tricheur car si tu a un classeur à trois onglets ouvert, que tu as F1( = feuil1) select, que tu déclenches l’enregistreur en ayant ta fenêtre vba ouverte, que tu click F2, il met :
Sheets('Feuil2').Select , si tu continues en en appuyant sur CTRL + click F1, il met :
Sheets(Array('Feuil1', 'Feuil2')).Select
Sheets('Feuil2').Activate
…et que tu continues avec CTRL + click F3, il met :
Sheets(Array('Feuil1', 'Feuil2', 'Feuil3')).Select
Sheets('Feuil2').Activate
Ce qui n’a rien à voir avec le fait de mettre les deux lignes finales dans un code, comme tu le constates fort judicieusement… Tricheur car il met en premier la ligne qu’il construit en deuxième et se comporte comme s’il mémorisait le fait que Feuil2 soit le premier élément du tableau…, mais bon c’est lui le Boss, il peut se permettre…
Si tu essaies ce code manuellement :
Sheets(Array('Feuil2', 'Feuil1', 'Feuil3')).Select
Sheets('Feuil2').Activate
Tu t’aperçois que ta feuille 2 reste active et les autres sélectionnées, ce qui n’a rien changé au fond du pb, puisqu’on a simplement décalé l’ordre des feuilles à la base, si tu exécutes le code pas à pas (F8), tu vois que la première ligne sélectionne les feuilles de ton Array en activant le premier item invariablement par défaut…. La méthode Activate du coup ne change rien puisqu’on reste sur le même objet.
Par contre si tu écris : ( en utilisant l’argument Replace de ta méthode Select) en commençant par l’activate
Sheets('Feuil3').Activate
Sheets(Array('Feuil2', 'Feuil1', 'Feuil3')).Select (False)
Tu as bien les 3 F select avec la 3 active
Bof puisque, sinon, pour faire simple, si tu as 3,4 ou + feuilles et que tu fais :
Sheets(Array('Feuil2', 'Feuil1', 'Feuil3')).Select en ayant à la base F > 3 d’active, tu as bien les 3 sélectionnées et la 2 d’active !
Pour ton deuxième exemple, c’est tout différent, on a affaire à un objet Range qui n’ a pas les même propriétés, quand tu en sélectionnes plusieurs, tu ne passes pas par un tableau (profondément, Excel, fait ce qu’il veut, c’est Son application) et du coup les règles diffèrent, l’enregistreur consulté pas à pas se comporte « normalement » et là effectivement la cellule active par défaut est celle en haut à droite, mais tu peux en activer une différente sans désélectionner. C’est plus logique.
En tout cas, merci, pour m'avoir poussé à me pencher sur une question que je me suis déjà posée sans avoir le courage d'aller plus loin
Bon WE à tous,
Brico