[VBA] Macros trop longues et à optimiser
Camille
-
Camille -
Camille -
Bonjour le forum,
Avec ce que j'ai trouvé sur le net et sur le forum, j'ai réussi a bricoler une macro de retraitement et de mise en forme :p
Je vous joins un fichier test https://www.cjoint.com/c/JGbnvn3hMEP
Les macros fonctionnent, par contre l'exécution totale met beaucoup de temps (plusieurs minutes)
C'est pour ça que j'ai besoin de votre expertise :)
Visiblement ça prend du temps a cause des macro "chercher_colorier"
Une piste intéressante je pense pourrait être de ne pas appliquer la macro Chercher_Colorier_plage_liste sur les lignes masquées. (je ne sais pas comment le faire)(les lignes masquées sont celles où la colonne N = 0)
En effet, avant de lancer la macro MEF_descriptif, je masque toutes les lignes non concernées (mais le code s’applique quand même dessus.
Le but de la macro est, selon le nombre d'onglet EC (X) de réaliser un descriptif à imprimer.
Ce descriptif se remplis via des formule en AF, et pour modifier modifier la police à l’intérieur d'une formule je n'ai trouvé que la méthode suivante :
-Copier/coller les valeurs,
-Réinitialiser la police,
-Appliquer la police souhaitée sur les bouts de textes souhaités (selon police dans la colonne O)
Merci !
Avec ce que j'ai trouvé sur le net et sur le forum, j'ai réussi a bricoler une macro de retraitement et de mise en forme :p
Je vous joins un fichier test https://www.cjoint.com/c/JGbnvn3hMEP
Les macros fonctionnent, par contre l'exécution totale met beaucoup de temps (plusieurs minutes)
C'est pour ça que j'ai besoin de votre expertise :)
Visiblement ça prend du temps a cause des macro "chercher_colorier"
Une piste intéressante je pense pourrait être de ne pas appliquer la macro Chercher_Colorier_plage_liste sur les lignes masquées. (je ne sais pas comment le faire)(les lignes masquées sont celles où la colonne N = 0)
En effet, avant de lancer la macro MEF_descriptif, je masque toutes les lignes non concernées (mais le code s’applique quand même dessus.
Le but de la macro est, selon le nombre d'onglet EC (X) de réaliser un descriptif à imprimer.
Ce descriptif se remplis via des formule en AF, et pour modifier modifier la police à l’intérieur d'une formule je n'ai trouvé que la méthode suivante :
-Copier/coller les valeurs,
-Réinitialiser la police,
-Appliquer la police souhaitée sur les bouts de textes souhaités (selon police dans la colonne O)
Merci !
1 réponse
-
Bonjour,
Dans tes boucles sur les cellules, tu pourrais, en effet, ne prendre que celles qui sont visibles
un truc du genreFor Each xcell In xrgTxt.SpecialCells(xlCellTypeVisible)
-
Oui, ça semble bien merci, tu saurais comment le greffer dans le code ? c'est un code que j'ai un peu de mal à modifier ?
De ce que je comprend, sur la ligneChercher_Colorier_plage_liste Range("A" & i + 2, "C" & i + PasTot), Range("O" & i + 1, "O" & i + PasTot)On définit la plage d’application,- Ah oui je vois !
Dans le moduleSub Chercher_Colorier_plage_liste(xrgTxt As Range, xrgQuoi As Range)
' idem précédent mais on recherche au sein d'une plage de cellule xrgTxt.
' C'est le cas le plus général: on recherche au sein de toute la plage xrgTxt
' chaque mot de la plage xrgQuoi et on applique la mise en forme graisse et couleur
Dim xcell As Range, old As Boolean
old = Application.ScreenUpdating: Application.ScreenUpdating = False
For Each xcell In xrgTxt.SpecialCells(xlCellTypeVisible)
Chercher_Colorier_un_liste xcell, xrgQuoi
Next xcell
Application.ScreenUpdating = old
End Sub
-