Bonjour à toutes et à tous,
La macro suivante permet de masquer ou d'afficher certaines lignes en fonction d'une valeur de la colonne B (1, 2 ou 3), me permettant d'effectuer un profil d'affichage.
Elle marche très bien, le seul problème est la lenteur d'exécution, même avec un PC récent :
Sub Afficher_ligne_1&3()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Range("B1:B" & Range("B65536").End(xlUp).Row).Select
For Each o In Selection
If o.Value = 1 Then
o.EntireRow.Hidden = False
Else
If o.Value = 2 Then
o.EntireRow.Hidden = True
Else
If o.Value = 3 Then
o.EntireRow.Hidden = False
End If
End If
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
L'utilisation de tableau variant pour la plage à analyser (le Range(...) )permet, semblerait-il d'accélerer le traitement des données. Je suppose qu'il faut déclarer le tableau, passer le Range(....).Select en Range(....).Value et utiliser le tableau dans la boucle pour masquer / afficher les lignes désirées... Mais, bon, encore une fois, impossible d'arriver à un truc qui marche.
Quelqu'un peut-il m'éclairer sur la question ? Merci d'avance.
La macro suivante permet de masquer ou d'afficher certaines lignes en fonction d'une valeur de la colonne B (1, 2 ou 3), me permettant d'effectuer un profil d'affichage.
Elle marche très bien, le seul problème est la lenteur d'exécution, même avec un PC récent :
Sub Afficher_ligne_1&3()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Range("B1:B" & Range("B65536").End(xlUp).Row).Select
For Each o In Selection
If o.Value = 1 Then
o.EntireRow.Hidden = False
Else
If o.Value = 2 Then
o.EntireRow.Hidden = True
Else
If o.Value = 3 Then
o.EntireRow.Hidden = False
End If
End If
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
L'utilisation de tableau variant pour la plage à analyser (le Range(...) )permet, semblerait-il d'accélerer le traitement des données. Je suppose qu'il faut déclarer le tableau, passer le Range(....).Select en Range(....).Value et utiliser le tableau dans la boucle pour masquer / afficher les lignes désirées... Mais, bon, encore une fois, impossible d'arriver à un truc qui marche.
Quelqu'un peut-il m'éclairer sur la question ? Merci d'avance.