Bonjour,
J'ai un code qui permet de remplir des zones de listes d'un UserForm. Pour cela il y a différentes boucles qui passent ligne par ligne le tableau et remplit les zones de listes (en enlevant les doublons!). Toutefois, etant donné que ce tableau peut être assez grand, les boucles mettent du temps et donc l'exécution de la macro de remplissage des zones de listes est assez lentes. Auriez-vous des solutions pour améliorer ce code en terme de performance?
Merci d'avance,
Contenu de la fonction "nb_lignes_transpose":
J'ai un code qui permet de remplir des zones de listes d'un UserForm. Pour cela il y a différentes boucles qui passent ligne par ligne le tableau et remplit les zones de listes (en enlevant les doublons!). Toutefois, etant donné que ce tableau peut être assez grand, les boucles mettent du temps et donc l'exécution de la macro de remplissage des zones de listes est assez lentes. Auriez-vous des solutions pour améliorer ce code en terme de performance?
Merci d'avance,
Code:
Sub filtres()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Call nb_lignes_tanspose 'Nombre de données dans le tableau transposé
''On annule tous les filtres déjà appliqués:
With Sheets(2)
If .FilterMode = True Then .ShowAllData
End With
'D'abord on renseigne les elements de la liste Board(sans doublons):
Filtre.zl_board.Clear 'Nettoyage
For Each a In Range("B2:B" & i1)
If a.Value <> "" Then
Filtre.zl_board.Text = a.Value
If Filtre.zl_board.ListIndex = -1 Then Filtre.zl_board.AddItem a.Value
End If
Next a
Filtre.zl_board.ListIndex = -1
'On met les valeurs du calendrier à vide
F_calendrier2dates.date_début.Value = ""
F_calendrier2dates.date_fin.Value = ""
'On renseigne les elements de la liste date day(sans doublons):
Filtre.zl_date.Clear 'Nettoyage
For Each b In Range("C2:C" & i1)
If b.Value <> "" Then
Filtre.zl_date.Text = b.Value
If Filtre.zl_date.ListIndex = -1 Then Filtre.zl_date.AddItem b.Value
End If
Next b
Filtre.zl_date.ListIndex = -1
'Une fois les listes définies, on peut afficher le userForm
Filtre.Show
Application.ScreenUpdating = False 'Permet de gagner du temps
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = True
End Sub
Contenu de la fonction "nb_lignes_transpose":
Code:
Sub nb_lignes_tanspose()
i1 = 1
Sheets(2).Select
Do
i1 = i1 + 1
Loop Until Cells(i1, 2).Value = ""
i1 = i1 - 1
End Sub
Dernière édition: