*** HELP ME !!!! ***

yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009 - 28 mai 2004 à 09:10
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 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


Y.C

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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....
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 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.

Merci encore
Y.C
0
Rejoignez-nous