Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

afficher masquer des lignes code plus rapide

  • Initiateur de la discussion Initiateur de la discussion pascal21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pascal21

XLDnaute Barbatruc
Code:
Sub masquer_ligne_Vide() 
Dim cel As Range 
For Each cel In Range("nd13:And500")
If cel = "1" Then 
cel.EntireRow.Hidden = True 
End If 
Next
End Sub
bonjour
j'ai ce code pour masquer les lignes dont la colonne nd contient la valeur 1
ça fonctionne mais c'est terriblement lent (env 30sec)
que faut-il fairemodifier pour l'accélérer
merci
 
Dernière édition:
Re : afficher masquer des lignes code plus rapide

Bonsoir pascal21, à tous,

J'ai testé la macro sur ton fichier (cherché les '2' car à priori pas de '1' dans la colonne ND). Le temps d'exécution est d'environ 0,05s.
VB:
Sub masquer_ligne_Vide()
Dim cel As Range, T1
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual

  Range("nd3:nd406").EntireRow.Hidden = False
  T1 = Timer
  
  For Each cel In Range("nd3:nd406")
    If cel = "2" Then cel.EntireRow.Hidden = True
  Next
  MsgBox "durée en s : " & Format(Timer - T1, " 0.00")
  
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub
 
Re : afficher masquer des lignes code plus rapide

Re mapomme,

Oui, et je pense que Pascal testait bien avec For Each cel In Range("nd13:And500")

Avec COLONNE(AND1)-COLONNE(NC1) = 677 fois plus de cellules, on obtient les 30 secondes du post #1 😎

A+
 
Re : afficher masquer des lignes code plus rapide

Re à tous

Il y a une Worksheet_SelectionChange et dans les codes on trouve, par exemple : Rows("13:500").Select
La boucle est assurée...
Donc changer
VB:
Rows("13:500").Select
Selection.EntireRow.Hidden = False
par
VB:
Rows("13:500").Hidden = False

devrait ramener un code plus acceptable.

Mais je maintient que ceci est très court:
VB:
Private Sub Label14_Click()
Usf2.Show 0
Dim I&, Tb As Variant, Plg As Range
With Sheets("Pointages")
    Tb = .Range("NC1:NC500")
    For I = 13 To 500
        If Tb(I, 1) = 1 Then Set Plg = Union(.Rows(I), IIf(Plg Is Nothing, .Rows(I), Plg))
    Next I
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    .Rows.Hidden = False
    If Not Plg Is Nothing Then Plg.Rows.Hidden = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End With
Unload Usf2
End Sub
P.S
VB:
 Tb = .Range("NC1:NC500")
N'est pas une erreur de plage 😀



Cordialement
 
Dernière édition:
Re : afficher masquer des lignes code plus rapide

bonjour à tous
je regarde vos nouvelles propositions dans la journée
vous avez sans doute remarqué que les celules à masquer sont regulières genre 1 ligne sur 2 ou 1/4 etc... n'y a t'il pas un code qui évitererait la recherche dans les cellules
 
Dernière édition:
Re : afficher masquer des lignes code plus rapide

re
effectivement le code de MaPomme est bien le plus rapide (0.67)
quelque chose a dù m'échapper lorsque je l'avais essayé hier
Application.Calculation = xlCalculationManual
cette ligne là change tout en fait on passe de 0.67 à 20 sec sans
comme l'écrit efgé
Il y a une Worksheet_SelectionChange
c'est surement due à ça
bonne journée
 
Re : afficher masquer des lignes code plus rapide

Bonjour à tous

Sinon, un truc sympa, comme on ne peut pas masquer une ligne en MEFC (enfin, il me semble), on pourrait utilser une MEFC comme ceci pour ne pas afficher les 1 🙂:

Code:
Sub MEF_Cellule_2_Blanc()
' MEF_Cellue_2_Blanc Macro
    'Cells.FormatConditions.Delete
    Columns("A:Z").Select
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub
 
Re : afficher masquer des lignes code plus rapide

Re

Sinon, come j'en avais besoin il y a 5 minutes, jai repris le code de MG 🙂 pour afficher soit P ou W sur une colonne. Ce qui donne:

Code:
Sub MasqueP()
Application.ScreenUpdating = False
Cells.EntireRow.AutoFit
On Error GoTo fini
Derl = Cells(65536, 1).End(xlUp).Row
With ActiveSheet.Range("H2:H" & Derl)
Set C = .Find("P", LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
C.EntireRow.Hidden = True
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
fini:
Application.ScreenUpdating = True
End Sub
Sub MasqueW()
Application.ScreenUpdating = False
Cells.EntireRow.AutoFit
On Error GoTo fini
Derl = Cells(65536, 1).End(xlUp).Row
With ActiveSheet.Range("H2:H" & Derl)
Set C = .Find("W", LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
C.EntireRow.Hidden = True
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
fini:
Application.ScreenUpdating = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
468
Réponses
2
Affichages
329
Réponses
3
Affichages
777
Réponses
7
Affichages
278
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…