sheets activate ou select ??

  • Initiateur de la discussion evelyneetfrancois
  • Date de début
E

evelyneetfrancois

Guest
bonjour
svp pour etre'' propre'' dans une macro ,pour revenir sur une feuille je dois mettre
sheets('mafeuille'). activate
ou
sheets('mafeuille') .select ??????????

ou bien ca revient au meme
les deux fonctionnent pareil ( a mes yeux !!!)
merci de votre conseil averti
bonne journée a tous
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Evelyne et François, Pascal76, le forum,

J'ai Excel 97 et il y a une chose qui me surprend : quand je fais

Sheets(Array('Feuil1', 'Feuil2', 'Feuil3')).Select
Sheets('Feuil1').Activate


ça marche ! Les 3 feuilles sont sélectionnées et la 1ère feuille est activée. Par contre, si je fais

Sheets(Array('Feuil1', 'Feuil2', 'Feuil3')).Select
Sheets('Feuil2').Activate


Les feuilles 1 et 3 ne sont plus dans la sélection et seule la feuille 2 est sélectionnée et activée (suis-je clair ?).

Pour une plage de cellules, c'est différent. Je peux faire

Range('A1:A65536').select
Range('A6').Activate


et la plage reste sélectionnée avec ma cellule A6 (ou une autre désignée) est activée ???

Pourquoi n'est pas pareil sur les feuilles ? Est-ce ma version d'Excel ???

Amicalement
Charly
 

Bricofire

XLDnaute Impliqué
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
 

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 544
Membres
103 244
dernier inscrit
lavitzdecreu