VBA: éviter visuellement le passage d'une feuille à l'autre
Résolu
Dylan68700
Messages postés
19
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
j'ai mis en place des macros dans un fichier, pour qu'il soit plus facile à prendre en main.
Mes macros fonctionnent, néanmoins j'aimerais savoir s'il était possible de modifier mon code afin de ne plus avoir à "subir" les changemets de feuilles lors de l'exécution de la macro ?
En d'autres termes, comment peut-on remplacer le fameux "Sheets("X").Activate", et rester sur la feuille d'origine, tout en récupérant des informations de la page "X" pour les coller dans cette feuille d'origine ?
Exemple, dans mon cas j'ai deux feuilles, nommées "2013" et "LISTE 2013". Voici le début de ma macro. En m'aidant juste sur ce petit morceau de code, je pourrais l'adapter au reste:
Sheets("2013").Activate
ActiveSheet.Range("$A$1:$AB$31").AutoFilter Field:=9, Criteria1:="100€"
D_L_C = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & D_L_C).Copy (Sheets("LISTE 2013").Range("A7"))
Ainsi, ma macro permet d'aller récupérer des données de la feuille "2013" selon la condition "100€", et de les coller dans la colonne A de la feuille "LISTE 2013" à partir de la cellule A7.
Est-il possible de simplifier ce code, dans le but de ne plus voir le passage d'une feuille à l'aute lors de l'exécution de la macro ?
Merci à vous,
Dylan68700
j'ai mis en place des macros dans un fichier, pour qu'il soit plus facile à prendre en main.
Mes macros fonctionnent, néanmoins j'aimerais savoir s'il était possible de modifier mon code afin de ne plus avoir à "subir" les changemets de feuilles lors de l'exécution de la macro ?
En d'autres termes, comment peut-on remplacer le fameux "Sheets("X").Activate", et rester sur la feuille d'origine, tout en récupérant des informations de la page "X" pour les coller dans cette feuille d'origine ?
Exemple, dans mon cas j'ai deux feuilles, nommées "2013" et "LISTE 2013". Voici le début de ma macro. En m'aidant juste sur ce petit morceau de code, je pourrais l'adapter au reste:
Sheets("2013").Activate
ActiveSheet.Range("$A$1:$AB$31").AutoFilter Field:=9, Criteria1:="100€"
D_L_C = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & D_L_C).Copy (Sheets("LISTE 2013").Range("A7"))
Ainsi, ma macro permet d'aller récupérer des données de la feuille "2013" selon la condition "100€", et de les coller dans la colonne A de la feuille "LISTE 2013" à partir de la cellule A7.
Est-il possible de simplifier ce code, dans le but de ne plus voir le passage d'une feuille à l'aute lors de l'exécution de la macro ?
Merci à vous,
Dylan68700
1 réponse
-
Bonjour,
tu pourrais (quoique certaines actions necessitent une feuille active dont peut-être le filtre) mais plutôt que de tout reprendre ajoute :
screenupdating = false
au début du code. En plus ça ira beaucoup plus vite.
eric
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci-
Bonjour, salut Eriic (et bonne année si je ne l'avais pas encore fait)
petite question:
je viens de tester ta proposition sur des fichiers que j'utilise, et bizarrement elle ne donne pas le m^me résultat que que la ligne que j'emploie, à savoir
Application.screenupdating = false
je ne doute pas que tu puisses me dire pourquoi pour satisfaire ma curiosité
Salut en attendant -
-
-
-