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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Puis, je me suis posé la question : Select ou Activate ?

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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Dim f As Worksheet
 
  For Each f In ThisWorkbook.Worksheets
    f.Activate
    f.Range("A1").Activate
  Next
Je comprends qu'utiliser un boucle est plus « moderne » que la bonne vieille boucle 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 :
Envoyé par alsimbad
sans oublier bien sur que ces deux outils sont quasiment inutiles a une ou deux exceptions près.
Je suis probablement un exemple parfait d'une de ces deux exceptions...

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


---