Microsoft 365 filtrages temps exécution très long

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
J'ai un gros problème de tris que je ne parviens pas à résoudre malgré mes recherches et mes tentatives.
Je me permets de me tourner une fois de plus vers vous pour demander de l'aide.

Procédure
Mon fichier de travail contient beaucoup de lignes (environ 60.000 actuellement) que je dois classer ,en fonction des urgences de rappels.
Si mon souci retient votre attention, vous le verrez dans le classeur test joint, il y a 5 types de classements des appels (+ Afficher toutes les lignes).
A appeler URGENT :
- aujourd’hui,

A appeler BIENTÔT :
- dép. A Rapp (dates dépassées sur rappels à faire),
- dép. Rép. (dates dépassées sur Répondeurs),
- OK RdV (vendeurs ayant donné le OK RdV au Rappel),
- les autres (s/A Rapp. et Repond.).

J'ai 5 boutons pour les tris permettant d'afficher UNIQUEMENT les lignes de rappels.
Bien évidemment les lignes des rappels URGENTS sont priorisées.

Pour afficher les lignes voulues, j'ai codé en filtrage avec classement (macros AffichageSuivisAppels).

Si je supprime les formatages de toutes les lignes à partir de la ligne 7 ... plus de problème les filtrages sont instantanés.

Mais, afin de pouvoir avoir une visibilité minimum pour consulter une ligne avant appel, , je dois conserver le formatage des lignes pour les colonnes :
- J N° Client,
- S commentaires après appels,
- T et V Dates de rappels,
- X situation au dernier appel,

Et là, ça ne va plus du tout, les filtrages sont très longs et cela me cause une perte de temps très importante.
Je me suis permis de joindre un fichier test "un peu gros" environ 6.500 lignes.
Si vous testez, vous pourrez constater les temps de filtrages pour 6.500 lignes.
Alors vous pourrez imaginer pour 60.000 et plus.

En espérant avoir été clair (il m'arrive souvent de ne pas l'être LOL), je joins le fichier test dans l'espoir d'une solution :)
Un grand merci déjà pour m'avoir lu.

Je vous souhaite une bonne fin de dimanche.
Amicalement,
lionel,
 

Pièces jointes

  • tris_test4.xlsm
    908.2 KB · Affichages: 24
Solution
Bonjour Lionel, le forum,
Je fais ce filtrage des dizaines de fois par jour et 10 secondes c'est vraiment trop long.
Alors en effet il faut effacer tous les formats de la ligne 7 jusqu'à la dernière ligne de la feuille.

Et les recréer ensuite sur les lignes du VisibleRange, voyez ce fichier (2) et ces 2 macros :
VB:
Sub Filtrer(critere As Range)
Trie_Ttlignes
[6:6].AutoFilter
[6:6].AutoFilter Field:=24, Criteria1:=[E3] 'Field:=1 colonne filtrage
[X1] = "=""Affiché""&""                          ""&SUBTOTAL(103,R[6]C:R[99999]C)"
[V1] = "=IF(R5C35>0,R5C35,""O"")"
[AA5] = "=COUNTIF(C[-3],""" & critere & """)"
lig = 0
VisibleRangeFormat
End Sub

Sub VisibleRangeFormat()
Dim col%, P As Range
If ActiveWindow.ScrollRow <> lig And...

job75

XLDnaute Barbatruc
Bonjour Lionel,

En déclarant Public la variable P ce fichier (3) fera gagner quelques dixièmes de seconde :
VB:
Public lig&, P As Range, t 'mémorise les variables
'---'
    If P Is Nothing Then Rows("7:" & Rows.Count).ClearFormats Else P.ClearFormats 'RAZ
    Set P = Intersect(ActiveWindow.VisibleRange.EntireRow, Range("A7:A" & Rows.Count)).SpecialCells(xlCellTypeVisible).EntireRow
A+
 

Pièces jointes

  • tris_test4(3).xlsm
    679.7 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr Gérard, le Forum,
lol "vieux motard que j'aimais",
Je viens de m'apercevoir que je ne suis pas revenu comme promis au poste 20.
Plates excuses, je croyais l'avoir fait;
Effectivement même avec 60.000 lignes c'est très rapide et c'est super pour moi.
Encore un grand merci :)
Bonne journée à toutes et à tous,
lionel,
 

Statistiques des forums

Discussions
292 942
Messages
1 927 370
Membres
183 525
dernier inscrit
testapp