Microsoft 365 Affichage lignes masquées - temps de traitement

Usine à gaz

XLDnaute Barbatruc
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:

Usine à gaz

XLDnaute Barbatruc
Bonjour Patrick,
Merci pour vous être intéressé à mon "gros" souci :)
OUI, j'ai déjà tout copié plusieurs fois sans amélioration :mad:

Bonjour Eric,
Merci à toi aussi :)
Pas de MFC dans mon classeur,

J'ai également fait des recherches sur le net, j'ai beaucoup lu et j'ai relevé "Performances d'excel" pièce jointe :
Je n'y ai rien trouvé pour améliorer mon "usine à gaz".

Je continue mes recherches,
lionel,
 

Pièces jointes

  • Performances d'Excel.docx
    62.3 KB · Affichages: 7

Victor21

XLDnaute Barbatruc
Re,

Essayez ces codes, sur une copie* du fichier :
VB:
Sub SupprFormatsInutilisés()
  SupprFormats True
End Sub

Sub SupprFormatsCellulesVides()
  SupprFormats False
End Sub

Sub SupprFormats(Min As Boolean)

  Dim Form As String, Prev As String, F As String
  Dim I As Integer, J As Integer
  Dim C As New Collection
  Dim Wksht As Worksheet, Cell As Range, Shts As Sheets
 
  Application.EnableCancelKey = xlDisabled
  Application.StatusBar = "Collecte des formats en cours..."
  Do
    J = (J + 1) Mod 5
    If J = 0 Then I = I + 1
    Application.SendKeys "{TAB}{END}{TAB 2}{HOME}" & IIf(I, "{PGDN " _
      & I & "}", "") & IIf(J, "{DOWN " & J & "}", "") & "+{TAB}^c{ESC}"
    Application.Dialogs(xlDialogFormatNumber).Show
    
    C.Add Form, Form
    Prev = Form
  Loop
  Application.StatusBar = "Recherche des formats utilisés en cours..."
  Set Shts = ActiveWindow.SelectedSheets
  On Error Resume Next
  For Each Wksht In Worksheets
    Wksht.Select
    For Each Cell In Wksht.UsedRange
      If Not IsEmpty(Cell) Or Min Then
        F = C.Item(Cell.NumberFormatLocal)
        If F <> "" Then
          C.Remove Cell.NumberFormatLocal
          F = ""
        End If
      End If
    Next Cell
  Next Wksht
  Application.ScreenUpdating = False
  Err.Clear
  Application.StatusBar = False
  J = 0
  With ActiveWorkbook
    Workbooks.Add
    For I = 1 To C.Count
      Range("A1").NumberFormatLocal = C(I)
      .DeleteNumberFormat ActiveCell.NumberFormat
      If Err = 0 Then J = J + 1 Else Err.Clear
    Next I
    MsgBox J & " format(s) inutilisé(s) supprimé(s).", vbInformation
  End With
  ActiveWorkbook.Close False
  Shts.Select

End Sub

' réinitialise l'emplacement de la dernière cellule
 Sub RéinitUsedRange()
ActiveSheet.UsedRange
 End Sub
'Et pour faire une cure contrex :
Sub NettoieEtDerniereCellule()     ' Laurent Longre
  Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String
  On Error Resume Next
  Calc = Application.Calculation
  With Application
    .Calculation = xlCalculationManual
    .StatusBar = "Nettoyage en cours..."
    .EnableCancelKey = xlErrorHandler
    .ScreenUpdating = False
  End With
  For Each Sht In Worksheets
    If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
      Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
      If Not DCell Is Nothing Then
        Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Clear
        Set DCell = Nothing
        Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
        If Not DCell Is Nothing Then _
          Sht.Range(DCell, Sht.[IV1]).EntireColumn.Clear
      End If
      Rien = Sht.UsedRange.Address
    End If
  Next Sht
  Application.StatusBar = False
  Application.Calculation = Calc
End Sub
*Pardon à l'auteur : je n'ai pas conservé son nom :(
 

Usine à gaz

XLDnaute Barbatruc
Re-Patrick,

Sub SupprFormats(Min As Boolean)
Dim Form As String, Prev As String, F As String
Dim I As Integer, J As Integer
Dim C As New Collection
Dim Wksht As Worksheet, Cell As Range, Shts As Sheets
Application.EnableCancelKey = xlDisabled
Application.StatusBar = "Collecte des formats en cours..."
Do
J = (J + 1) Mod 5
If J = 0 Then I = I + 1
Application.SendKeys "{TAB}{END}{TAB 2}{HOME}" & IIf(I, "{PGDN " _
& I & "}", "") & IIf(J, "{DOWN " & J & "}", "") & "+{TAB}^c{ESC}"
Application.Dialogs(xlDialogFormatNumber).Show
ça coince là :
C.Add Form, Form

J'essaie de voir si je suis capable de corriger :)
 

Usine à gaz

XLDnaute Barbatruc
Je test à nouveau en désactivant mes macros et en déprotégeant la feuille :
Il me demande Format de cellule:
test.jpg

Je clic sur OK,
Il me le redemande :
Re-OK

et beugue sur :
C.Add Form, Form

je vais essayer de comprendre mais cela me semble trop puissant pour mes maigres connaissances :)
lionel,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour le fil, Arthour, Victor,
Avez vous beaucoup de calculs non sur votre feuille mais dans votre classeur ?
Si oui, essayez avec ça. Le passage en calcul manuel peut quelquefois améliorer les choses.

Application.ScreenUpdating = false
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

et évidemment les supprimer en sortant.
 

Usine à gaz

XLDnaute Barbatruc
Bonsoir Sylvanu,
Merci d'être là toi aussi :)
Oui, j'ai exécuté ces codes :
Application.ScreenUpdating = false
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

et évidemment les supprimer en sortant.
Je continue mes recherches,
lionel,
 

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je reviens sur mon "gros" souci qui me pose un vrai problème.

Dans mon fichier de travail, il y a environ 50 000 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 (plus vers 30 sec).
et j'ai a le faire des dizaines de fois par jour. C'est beaucoup de temps perdu.


Dans un fichier vierge j'ai copié toutes mes lignes "uniquement les valeurs" pour tester si le problème est le même.
Dans ce fichier vierge, j'ai utilisé divers p'tits codes (cités dans mon post#1) je les ai même copiées plusieurs fois pour avoir plus de 200 000 lignes).
(j'ai mis 9 colonnes colorées en vert clair pour être conforme à mon fichier de travail)
Et, dans ce fichier vierge, avec ces p'tits codes fonctionnent super ... c'est instantané !

Dans mon fichier de travail, j'ai tenté le code (post#6) que m'a transmis Victor21 ... malheureusement ça bug !
Je ne peux donc pas faire le nettoyage préconisé.


Quand je lance la macro de tri :
- tous les autres codes sont désactivés :
- Application.EnableEvents = False
- Application.ScreenUpdating = False
- Application.Calculation = xlCalculationManual

Dans mon fichier de travail :
- 9 colonnes colorées en vert clair sur 45,

J'ai continué à faire un tas de recherches sur le net et je n'ai pas trouvé !

J'ai fait un nouveau contrôle sur ma feuille avec le module recherche d'excel :
- 5/6 formules dans lignes 1 à 5,
- Pas de notes,
- 3 MFC seulement en celulles T1-T2-T3
- validation des données = 0
- constantes = quasiment toutes les cellules de la feuille soit des milliers,

Mon code de tri va de la ligne 7 à la ligne 60 000
- les quelques formules et les 3 MFC se trouvant avant la ligne 7 ne devraient pas poser de problème ?

J'ai également utilisé les p'tits codes utilisés dans le fichier crée mais rien ne change dans mon fichier de travail !
Par contre cela ne pourrait-il pas provenir des constantes ?

Je ne sais plus où chercher ...
Auriez-vous des pistes ?
Avec mes remerciements,
Amicalement,
Lionel,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour le fil,
En désespoir de cause ....
J'ai trouvé ça :
 

Discussions similaires

Réponses
9
Affichages
306
Réponses
12
Affichages
519
Réponses
3
Affichages
360

Statistiques des forums

Discussions
315 094
Messages
2 116 143
Membres
112 669
dernier inscrit
Guigui2502