Simplification code - fichier dynamique avec liste déroulante

Bonjour à tous,

Dans le fichier joint vous trouverez la maquette simplifiée de ce que je cherche à obtenir dans un fichier qui a plus de 30 onglets.

Le code fonctionne correctement mais je cherche à savoir s'il n'y a pas un moyen de le simplifier pour qu'il ne rame pas à cause du nombre d'onglets présents dans mon fichier, ce qui est le cas aujourd'hui.

Par exemple je mets une étape qui affiche toutes les lignes et toutes les colonnes dans mon fichier mais je dois faire une ligne par onglet. Je n'ai pas réussi à utiliser une formule qui dirait affiche toutes les lignes et colonnes pour les onglets "INDIC 1", "INDIC 2", etc. En sachant qu'un nombre conséquent d'onglets ne sont pas concernés par cette macro, je ne peux donc pas dire : afficher toutes les lignes / colonnes du classeur Excel.

Idem pour la couleur, dans la partie "PERIODE" je dois mettre une ligne de code par onglet pour mettre les couleurs, est-il possible d'écrire : dans les onglets "INDIC 1" et "INDIC 2" de C4:C9 mettre telle couleur. Et pouvoir quand on affiche tout ou qu'on change de période que cette couleur disparaisse.

Le but de ce fichier c'est qu'en fonction du choix de l'entreprise et de la période un certain nombre de ligne et colonne soit masqués dans certains onglets du fichier et que certaines cellules soient colorisées. Et surtout qu'il soit plutôt fluide et si possible ne pas multiplier les lignes de codes.

Je suis débutante et autodidacte en VBA, ce qui peut expliquer que mon code ne soit pas très "scolaire" ni "pro".

Avez-vous des idées ou des pistes d'amélioration à me proposer svp?

Merci par avance!

4macro.xlsm (29.27 Ko)

Bonjour,

Ton fichier est au format xlsx, format qui ne prend pas en charge les macros, du coup on a aucun code dans ton fichier, est-ce voulu?

Bonjour,

Non du tout, je suis désolée. Voici le fichier au bon format.

3macro.xlsm (29.27 Ko)

Bonjour,

Je ne sais pas vraiment si on peut parler de simplification vu que mon code final est plus long que ton code initial, mais étant donné que tu n'avais que 2 feuilles, on va dire que c'est normal, pour 30 feuilles le gain serait vraiment visible.

Je te transmets le fichier modifié:

Je n'ai pas bien compris l'histoire des couleurs, je ne m'en suis pas occupé pour le moment...

J'ai laissé ton code en commentaire pour le moment

Merci pour ta rapidité.

J'ai un peu de mal à comprendre tout mais d'après ce que je vois déjà il faudrait que tous mes onglets commencent par le même nom pour que ton code fonctionne ce qui n'est pas le cas aujourd'hui mais ça peut se changer.

Par contre dans mon exemple dans les deux onglets ce sont les mêmes lignes et colonnes qui doivent être masquées mais dans les faits en fonction des onglets ce n'est pas forcément le cas.

Du coup je vais essayer de comprendre ton code pour voir si je peux le modifier.

Pour la couleur c'est juste si on affiche par exemple la période 2018 il faudrait que dans la colonne C les cellules C4 et C5 soit d'une certaine couleur. Mais ensuite il faudrait que lorsqu'on affiche tout ou une autre période la couleur disparaisse.

Bonjour,

ah... donc tes onglets ne commenceront pas tous par INDICATEUR, c'est gênant pour la suite de la macro... à la limite, si elles se suivent toutes, on peut boucler sur les feuilles de la feuille n°2 à la feuille n°10 par exemple:

For i = 2 to 10
    Set wks = Worksheets(i)
Next i

De même, comme je pensais que tu utilisais toujours les mêmes plages, je pensais pouvoir accélérer le code en ne calculant qu'une fois les zones à cacher et à imprimer, idem pour la couleur, malheureusement ce n'est pas le cas...

Je te laisse essayer de t'en sortir de ton côté, n'hésite pas à revenir pour poser des questions si besoin

En soit, le code n'est pas entièrrement à jeter, il faut juste revoir sa logique

Hello,

Yes en effet! Merci je vais tenter de continuer avec celui-ci qui me donne déjà une très bonne piste de réflexion.

Merci!

Rechercher des sujets similaires à "simplification code fichier dynamique liste deroulante"