Optimisation de code pour éxécution plus rapide

  • Initiateur de la discussion Initiateur de la discussion treza88
  • 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 !

treza88

XLDnaute Occasionnel
Bonjour a tous,

Je vous sollicite pour voir si il y a une solution pour rendre plus rapide l’exécution d'une commande de masquage de ligne en fonction d'une cellule contenant un Zéro ou pas.
Le code ci dessous fonctionne, mais comme la feuille comporte un peu moins de 400 lignes le code si dessous est un peu lent a s’exécuter.
Existe t il un autre code plus rapide?


Code:
Sub masque_0()
  Application.Calculation = xlCalculationManual
  Dim i As Integer
   
  If ActiveSheet.Index = 1 Then

  For i = 8 To Range("E65536").End(xlUp).Row
  If Cells(i, 7).Value = 0 Then
  Cells(i, 7).EntireRow.Hidden = True
  End If
  Next i
   
  ElseIf ActiveSheet.Index = 6 Then
  For i = 3 To Range("D65536").End(xlUp).Row
  If Cells(i, 5).Value = 0 Then
  Cells(i, 5).EntireRow.Hidden = True
  End If
  Next i
   
  ElseIf ActiveSheet.Index = 6 Then
  For i = 3 To Range("D65536").End(xlUp).Row
  If Cells(i, 4).Value = 0 Then
  Cells(i, 4).EntireRow.Hidden = True
  End If
  Next i
   
  Else
  For i = 5 To Range("D65536").End(xlUp).Row
  If Cells(i, 6).Value = 0 Then
  Cells(i, 6).EntireRow.Hidden = True
  End If
  Next i
   
  End If

Merci d'avance.
 
Hello
un essai avec ce code

VB:
Sub masque_0()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim i As Integer

Select Case ActiveSheet.Index
    Case 1
        For i = 8 To Range("E65536").End(xlUp).Row
            Cells(i, 7).EntireRow.Hidden = (Cells(i, 7).Value = 0)
       Next i
 
    Case 6
        For i = 3 To Range("D65536").End(xlUp).Row
            Cells(i, 5).EntireRow.Hidden = ((Cells(i, 5).Value = 0) Or (Cells(i, 4).Value = 0))
        Next i
 
    Case Else
        For i = 5 To Range("D65536").End(xlUp).Row
            Cells(i, 6).EntireRow.Hidden = (Cells(i, 6).Value = 0)
        Next i
End Select

Application.Calculation = xlCalculationAutomatic
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
10
Affichages
282
Réponses
2
Affichages
203
Réponses
4
Affichages
180
Réponses
2
Affichages
124
Réponses
5
Affichages
233
Réponses
8
Affichages
233
Réponses
8
Affichages
471
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
483
Retour