Bonjour,
J'ai écrit une macro qui permet de formater des données brutes qui alimentent, sur une autre feuille, 4 tableaux croisés dynamiques. Ceci se répète trois fois dans le classeur : une feuille de données suivie d'une feuille de tabeaux, ect.
À la fin de la macro, avant de redonner le contrôle à l'utilisateur, je désire ramener la sélection à A2 dans chacune des 6 feuilles question d'uniformiser la vue. J'ai donc écrit ce code :Puis, je me suis posé la question : Select ou Activate ?Code:
1
2
3
4
5
6
7 ' Remise de la sélection à "A1" pour toutes les feuilles On Error Resume Next For Feuille = 1 To Worksheets.Count Sheets(Feuille).Select Range("A2").Select Next Feuille
J'ai essayé les deux et je n'ai pas vu de différence évidente. J'ai donc refilé la question à notre ami Google et je suis arrivé ici sur une discussion daté de 2005.
En gros, on disait que la question n'a plus vraiment d'importance vu que ces deux commandes (méthodes ?) sont de moins en moins employées presque, si j'ai bien compris, passées en désuétude. Et, on me suggère plutôt ce code :Je comprends qu'utiliser un boucleCode:
1
2
3
4
5
6 Dim f As Worksheet For Each f In ThisWorkbook.Worksheets f.Activate f.Range("A1").Activate Next
est plus « moderne » que la bonne vieille boucleCode:For Each
mais c'est la double présence de la méthode Activate qui m'étonne. Après qu'on m'ait dit qu'elle était en voie de dispartition. Voici la phrase exacte :Code:For Next
Je suis probablement un exemple parfait d'une de ces deux exceptions... :lol:Citation:
Envoyé par alsimbad
sans oublier bien sur que ces deux outils sont quasiment inutiles a une ou deux exceptions près.
Pour revenir à la bouche For Each, je l'emploi souvent. Chaque fois que je pense que le code sera plus compact et efficace. Mais dans le cas que je vous présente au début, c'était pas mal kif kif.
Du moins, je le crois. Est-ce que je me trompe ? Je suis un vieux qui a appris le basic au début des années 80. J'ai travaillé fort, plus tard, pour passer de Wordbasic à VBA. Je suis ici pour apprendre.
Pierre
---