Accélerer une boucle pour masquer des lignes ds Excel 2010

Bonjour Forum,

Suite à un projet de gros formulaire en Userform qui me dépassait, je suis passé sur une version Excel avec VBA qui est plus facile à gérer mais je voudrais savoir si quelqu'un aurait une solution pour accélerer une boucle afin de masquer/démasquer des lignes.

Pour faire court, j'ai un combobox qui me donne un nom de responsable et à chaque fois que je change le nom du responsable, je dois ré-afficher toutes les lignes puis ne montrer que celles qui relèvent du responsable. En effet, certains responsables ont des lignes en commun donc je ne peux les laisser masquées sous peine de ne plus les voir pour le suivant.

Ma solution actuelle fonctionne mais elle est très gourmande en ressources (entre 10 et 15 secondes...)

'Je change mon responsable

Private Sub ComboBox1_click()

'Je montre toutes les lignes possibles

Range("G3") = ComboBox1.Value

For Each Ligne In ActiveSheet.UsedRange.Rows

If Ligne.Cells(1, 20).Value <> 0 Then

Ligne.EntireRow.Hidden = False

End If

Next

'Je ne montre plus que celles liées au nouveau responsable

For Each Ligne In ActiveSheet.UsedRange.Rows

If Ligne.Cells(1, 20).Value = 0 Then

Ligne.EntireRow.Hidden = True

End If

Next

End Sub

Est-ce le "For each line" qui est balaye trop large ?

Pour info, j'ai 437 lignes à balayer et ce chiffre pourra aller jusqu'à 500 environ.

Le "value = 0" pour afficher la ligne ou non vient d'un VLOOKUP mais je ne pense pas que ce soit cela qui ralentisse la procédure

Voyez vous une solution plus rapide ?

Merci d'avance,

Alci

Bonjour

Sans fichier

A tester si gain de temps

'Je change mon responsable
Private Sub ComboBox1_click()

  Application.ScreenUpdating = False
  'Je montre toutes les lignes
  Range("G3") = ComboBox1.Value
  ActiveSheet.UsedRange.Rows.Hidden = False

  'Je ne montre plus que celles liées au nouveau responsable
  For Each ligne In ActiveSheet.UsedRange.Rows
    If ligne.Cells(1, 20).Value = 0 Then
      ligne.Hidden = True
    End If
  Next
  Application.ScreenUpdating = True
End Sub

pfffiou ! une Ferrari !!

et ce, sans fichier !!

merci beaucoup

Rechercher des sujets similaires à "accelerer boucle masquer lignes 2010"