Bonjour,
je charge dans un DGV le contenu d'un fichier texte de 891 lignes.
Ensuite, j'effectue un traitement par groupe de 3 lignes : j'applique différentes conditions de couleurs et de mise en forme sur les cellules de la première ligne en fonction du contenu de la seconde
Le temps de chargement est trop long principalement à cause de la boucle ci-dessous qui dure 15 secondes (sur 18). Que puis-je faire pour accélérer ce traitement ? Peut-on le faire en arrière plan ? Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 'cette boucle dure 15s For i As Integer = 0 To DGV1.RowCount - 1 Step 3 'la première ligne d'une réf est identique à celle des manquants sans confirmation DGV1.Rows(i).Height = 40 DGV1.Rows(i + 1).Visible = False 'je masque cette ligne, seulement utile à la mise en forme de la ligne "i", inutile de l'afficher dans le dgv. DGV1.Rows(i + 2).DefaultCellStyle.BackColor = Color.Gray DGV1.Rows(i + 2).Height = 30 'cette partie dure 12s For j As Integer = 15 To DGV1.Columns.Count - 1 If DGV1.Rows(i).Cells(j).Value < 0 And DGV1.Rows(i + 1).Cells(j).Value < 0 Then DGV1.Rows(i).Cells(j).Style.BackColor = Color.OrangeRed DGV1.Rows(i).Cells(j).Style.ForeColor = Color.White ElseIf DGV1.Rows(i).Cells(j).Value < 0 And DGV1.Rows(i + 1).Cells(j).Value > 0 Then 'en fonction du contenu de la 2e ligne, on modifie la couleur de ces cellules de la premiere DGV1.Rows(i).Cells(j).Style.BackColor = Color.OliveDrab Else DGV1.Rows(i).Cells(j).Style.BackColor = Color.LightGreen End If DGV1.Rows(i + 2).Cells(j).Style.BackColor = Color.White 'coloration de la 3e ligne à partir de la colonne 15 If (DGV1.Rows(i + 2).Cells(j).Value <> "0 / 0") Then DGV1.Rows(i + 2).Cells(j).Style.ForeColor = Color.Blue Else DGV1.Rows(i + 2).Cells(j).Style.ForeColor = Color.Gray End If Next 'cette partie dure 3s For j As Integer = 4 To 13 DGV1.Rows(i + 2).Cells(j).Style.BackColor = Color.Black DGV1.Rows(i + 2).Cells(j).Style.ForeColor = Color.White DGV1.Rows(i + 2).Cells(j).Value = "" 'on vide la cellule DGV1.Rows(i + 2).Cells(j).ReadOnly = True Next DGV1.Rows(i + 2).Cells(DGV1.Columns.Count - 1).Value = "" 'je vide le contenu de la dernière cellule de la ligne. next
Partager