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