Microsoft 365 Affichage lignes masquées - temps de traitement

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Je reviens sur un sujet déjà traité bien des fois.

Mais ma demande concerne mon "usine à gaz" comme dirait mon cher Gérard.
Je ne m'en sors pas et je me permets de vous exposer mon souci :

Dans mon fichier de travail, il y a environ 50 00 lignes et une 50 aine de colonnes.
Quand je veux afficher toutes les lignes, je ne sais pas pourquoi mais ça prend beaucoup de temps, 20 à 30 secondes en moyenne
et j'ai a le faire des dizaines de fois par jour. C'est beaucoup de temps perdu.


Dans un fichier vierge copié toutes mes lignes "uniquement les valeurs" pour tester si le problème est le même.
Dans ce fichier vierge, j'ai utilisé les codes suivants :
VB:
Sub haut_0()
Rows("3:35000").RowHeight = 0
End Sub
Sub haut_20()
Rows("3:35000").RowHeight = 15
End Sub

Sub Masquer()
Rows("3:35000").EntireRow.Hidden = True
End Sub
Sub Masquer1()
Rows("3:35000").EntireRow.Hidden = False
End Sub

Sub critere1()
Rows("2:2").Select
Selection.AutoFilter Field:=2, Criteria1:=Format(Range("a1"))
Exit Sub
End Sub

Sub Macro3()
Rows("2:2").Select
Selection.AutoFilter
End Sub

Et ces p'tits codes fonctionnent super ... c'est instantané !
(j'ai mis 22 colonnes colorées en vert clair)

Pourtant, dans mon fichier de travail
:
- pas de cellules fusionnées,
- pas de formatage spécial,
- pas de formules - que des valeurs
- 9 colonnes colorées en vert clair sur 45,
et quand je veux afficher toute les lignes, je désactive les codes avec :
Application.EnableEvents = False
Application.ScreenUpdating = False

J'ai fait un tas de tests ... de recherches ...
Je n'arrive pas à comprendre pourquoi c'est si long dans mon fichier de travail ?
Auriez-vous une idée sur ce qui pourrait occasionner un si long temps de traitement ?

Avec mes remerciements,
Je vous souhaite à tous et à toutes un beau dimanche,
Amicalement,
lionel,
 
Dernière édition:

laurent950

XLDnaute Accro
Bonjour Lionel, le forum.
La doc Microsoft : Procédure de nettoyage d’un classeur Excel afin qu’il utilise moins de mémoire

https://docs.microsoft.com/fr-fr/office/troubleshoot/excel/clean-workbook-less-memory

Au début dans le chapitre Cause :
Il y a un lien qui envois sur une page :
Utilisation de la mémoire dans l édition 32 bits d Excel 2013 (valable pour 2016 aussi)
En bas de cette page ont peux utiliser un utilitaire Process Explorer (pour connaître la limite en 32 bits des 2 GO allouée par le programme)

Enfin c est une autre piste !

Laurent
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Le problème doit être qu'à chaque ligne ajoutée, XL ajoute le format. Il ne sait pas à priori que c'est le même format qu'à la ligne précédente.
Donc vous devez avoir .... 60000 formats.
Dans ce cas, il y a peut être une solution.
Faire un copier d'une cellule puis selectionner la colonne et faire un coller format.
Donc sur l'ensemble de votre fichier vous n'aurez plus que 50 formats. Et toutes les cellules auront le bon format.
Ca doit pouvoir se faire par macro:
VB:
    Range("B2").Select
    Selection.Copy
    Columns("B:B").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
En bouclant sur les 50 colonnes.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Peut être à essayer sur une copie du fichier :
VB:
Sub NettoyageFormat()
Cells.Select
ActiveWorkbook.Names.Add Name:="Tout", RefersToR1C1:="=Feuil1!R1:R1048576"
For Colonne = 1 To 50
    [Tout].Cells(2, Colonne).Select        ' 2 est la cellule de la ligne 2 supposée contenir le bon format, sinon le changer.
    Selection.Copy
    [Tout].Range(Cells(1, Colonne), Cells(1048576, Colonne)).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Next Colonne
    Range("A1").Select
End Sub
Pour les 50 premières colonnes, je copie le format présent en ligne 2 et l'applique d'un coup sur toute la colonne.
Ca limite le nombre de format utilisé. ( j'ai mis 50 pour être sur qu'il n'y a aucun format, même invisible à l'utilisateur )
 

job75

XLDnaute Barbatruc
Bonjour Lionel, sylvanu,

Chez moi sur Excel 2019 je crée un fichier vierge avec la cellule A1 colorée en jaune, il pèse 8 Ko.

Mais si je copie la cellule colorée A1 et la colle sur toute la colonne A son poids passe à 5,3 Mo.

Si j'efface la couleur son poids redevient 8 Ko.

Si je sélectionne toute la colonne A et la colorie en jaune son poids reste à 8 Ko.

A+
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Bonjour,
Normal Job. Je l'avais remarqué il y a longtemps. Quand on duplique une cellule. XL duplique la mise en forme. Il n'associe pas les deux cellules.
Comme il y a 1 million de lignes, 5.3 Mo ne font en fait que 5 octets par mise en forme.
Idem pour les encadrements, Microsoft préconise de les utiliser avec parcimonie.
D'où très certainement le besoin d'intégrer le nettoyage dont parle Eriic sur Xl2019.... et tant pis pour ceux qui ne l'ont pas.:mad:
D'où mon idée de dupliquer une mise en forme sur toute la colonne. Dans ce cas ça ne compte que 1 mise en forme au lieu d'un million.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard,
Re Sylvanu et laurent950,
Merci Gérard de t'intéresser à mon problème :)

J'ai pas mal avancé sur mon problème et j'ai trouvé la majeure partie du souci.
1 - comme je disais plus haut dans un autre post#, j'ai, dans mon fichier de travail créé une nvelle feuille et j'y ai copié uniquement "les valeurs"
de ma feuille de travail :
ça fonctionne, les tris, masquages et affichages de lignes sont instantanés.

2 - Dans ma feuille de travail, j'ai effacé tous les formats :
ça fonctionne, les tris, masquages et affichages de lignes sont instantanés.

J'ai donc re-formaté une à une les colonnes pour voir où "ça coince" ... et j'ai trouvé :
voir photo ci-dessous :
Sans titre.jpg

C'est ce formatage des colonnes R et S qui bloque les les tris, masquages et affichages de lignes.
Pourtant, j'ai besoin pour qu'on voit ce qui est écrit de les formater.

Pensez-vous qu'il y aurait une solution sans bloquer les les tris, masquages et affichages de lignes ?
lionel,
 

eriiic

XLDnaute Barbatruc
J'ai bien compris que c'était sur 2 colonnes.
S'il est déjà présent, pas besoin de l'ajouter.
Et si ton ajout se fait par copier-coller d'une ligne, tu peux le supprimer et le remettre sur la plage entière qu'il ne soit plus découpé par cellule.
eric
 

Discussions similaires

Réponses
3
Affichages
211

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 007
dernier inscrit
salma_hayek