laurent92370
Messages postés70Date d'inscriptionmercredi 24 septembre 2003StatutMembreDernière intervention20 mars 2007
-
16 déc. 2005 à 18:35
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
16 déc. 2005 à 19:29
Bonjour,
Le code suivant fonctionne, mais le traitement est TRES LONG. Je demande de l'aide pour optimiser ce code. Merci a ceux qui vondront m'aider, j'ai du mal a l'optimiser.
Public Function liste()
Dim i, j As Integer
Set db = OpenDatabase(App.Path & "" & "datas.mdb")
Set rst = db.OpenRecordset("ADHERENTS")
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 3) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 3) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 3
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "non.ico")
Next
End If
If .TextMatrix(i, 3) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 3) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 3
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 4) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 4) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 4
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "non.ico")
Next
End If
If .TextMatrix(i, 4) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 4) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 4
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 5) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 5) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 5
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "non.ico")
Next
End If
If .TextMatrix(i, 5) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 5) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 5
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 6) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 6) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 6
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "non.ico")
Next
End If
If .TextMatrix(i, 6) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 6) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 6
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" & "oui.ico")
Next
End If
Next
End With
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 16 déc. 2005 à 18:55
Ben tout dépend du nombre de ligne de ton grid aussi...
Une des premières chose à faire : bloquer le raffraichissement du
contrôle (en le rendant invisible par exemple), cela évite de le
retracer à chaque modification (tu devrais y gagner de précieuses
secondes).
Ensuite, niveau code, tu peux optimiser un peu avec 2 boucles imbriquées :
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 3) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 3) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 3
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"non.ico")
Next
End If
If .TextMatrix(i, 3) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 3) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 3
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 4) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 4) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 4
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"non.ico")
Next
End If
If .TextMatrix(i, 4) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 4) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 4
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 5) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 5) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 5
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"non.ico")
Next
End If
If .TextMatrix(i, 5) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 5) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 5
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"oui.ico")
Next
End If
Next
End With
With PRINCIPAL.liste
For i = 1 To .Rows - 1
If .TextMatrix(i, 6) = "NON" Then
PRINCIPAL.liste.TextMatrix(i, 6) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 6
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"non.ico")
Next
End If
If .TextMatrix(i, 6) = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, 6) = ""
.Row = i
For j = 0 To .Cols - 1
.Col = j
PRINCIPAL.liste.Row = i
PRINCIPAL.liste.Col = 6
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"oui.ico")
Next
End If
Next
End With
devient alors :
Dim sTexte as string
With PRINCIPAL.liste
For x = 4 To 6
PRINCIPAL.liste.Col = x
For i = 1 To .Rows - 1
.Row = i
sTexte = .TextMatrix(i, x)
If sTexte = "NON" Then
PRINCIPAL.liste.TextMatrix(i, x) = ""
For j = 0 To .Cols - 1
.Col = j
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"non.ico")
Next j
ElseIf sTexte = "OUI" Then
PRINCIPAL.liste.TextMatrix(i, x) = ""
For j = 0 To .Cols - 1
.Col = j
Set PRINCIPAL.liste.CellPicture = LoadPicture(App.Path & "" &
"oui.ico")
Next j
End If
Next i
Next x
End With
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
laurent92370
Messages postés70Date d'inscriptionmercredi 24 septembre 2003StatutMembreDernière intervention20 mars 20071 16 déc. 2005 à 19:05
Salut DarK Sidious
Merci pour cette réponse rapide.
Le code est bcp plus rapide à l'exécution mais la boule verte ou rouge (c est ce que represente les 2 fichiers icones) s'affichent dans toutes les colonnes au lieu seulement des colonne indexees 4 à 6.