sheets activate ou select ??

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
253
D
  • Question Question
Réponses
5
Affichages
248
Didierpasdoué
D
Réponses
1
Affichages
575
Retour