yoarf
Messages postés215Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention19 février 2009
-
28 mai 2004 à 09:10
yoarf
Messages postés215Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention19 février 2009
-
28 mai 2004 à 09:49
Salut !
Sous Access 97, j'execute du code qui mets à jour des combobox (en fonction de la base de données de cette même appli Access) présentes dans une feuille Excel !
Cependant ce traitement dure presque 30 secondes !!!
Je voudrais savoir donc comment diminuer cette durée!
Merci d'avance et voici le code:
Set rsResponsable = db.OpenRecordset("SELECT * FROM T_RESPONSABLE ORDER BY NomResponsable")
nbOle = Worksheets("APPSP").OLEObjects.Count
For i = 1 To nbOle
If (TypeName(Worksheets("APPSP").OLEObjects(i).Object) = "ComboBox") Then
Worksheets("APPSP").OLEObjects(i).Object.Clear
rsResponsable.MoveFirst
While Not rsResponsable.EOF
Worksheets("APPSP").OLEObjects(i).Object.AddItem Mid(rsResponsable.Fields("Prenom"), 1, 1) & ". " & rsResponsable.Fields("NomResponsable")
rsResponsable.MoveNext
Wend
End If
Next
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 mai 2004 à 09:27
Essaies ce genre de code:
Set rsResponsable = db.OpenRecordset("SELECT * FROM T_RESPONSABLE ORDER BY NomResponsable")
nbOle = Worksheets("APPSP").OLEObjects.Count
Dim Obj as Object
For i = 1 To nbOle
Set Obj = Worksheets("APPSP").OLEObjects(i).Object
If (TypeName(Obj) = "ComboBox") Then
With Obj
.Clear
rsResponsable.MoveFirst
While Not rsResponsable.EOF
.AddItem Left$(rsResponsable.Fields("Prenom"), 1) & ". " & rsResponsable.Fields("NomResponsable")
rsResponsable.MoveNext
Wend
DoEvents
End With
End If
Next
en fait, il faut éviter les multiples appels de ("APPSP").OLEObjects(i).Object car VB recherche l'objet a chaque fois....
yoarf
Messages postés215Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention19 février 2009 28 mai 2004 à 09:49
Vraiment vraiment merci !
Juste sur ce traitement je suis passé de 24 à 7 secondes !!!
Enorme !!!
Avant j'avais 1 min 8s de traitement, juste avec ceci je suis à 50 sec. Et ce type de code je l'utilise une autre fois encore.