Accélérer un procédure VBA dans un userform

Bonjour à tous,

En suivant vos conseils avisés (notamment ceux de Dan), j'ai réussi à construire mon userform... Je vais même chercher les données de ma combobox dans un fichier fermé. Seulement, la procédure (ci-dessous) prend environ 10 secondes avant de me faire apparaitre le userform...

Connaissez-vous un moyen d'accélérer ma procédure Initialize ?

Private Sub UserForm_Initialize()

ButOrg.Value = True

repertoire = ThisWorkbook.Path & "\"

classeur = "ListeAgences.xls"

i = 2

Do

temp = Application.ExecuteExcel4Macro("'" & repertoire & "[" & classeur & "]ListeAG'!R" & i & "C1")

If temp <> 0 Then

Me.ComboAgences.AddItem

Me.ComboAgences.List(i - 2, 0) = temp

Me.ComboAgences.List(i - 2, 1) = Application.ExecuteExcel4Macro("'" & repertoire & "[" & classeur & "]ListeAG'!R" & i & "C2")

i = i + 1

End If

Loop Until temp = 0

End Sub

Merci d'avance.

Fabrice,

bonsoir

un exemple qui utilise la bibliothèque ADO, à condition que le tableau ne contienne pas de cellules vides :

Private Sub UserForm_Initialize()
    Dim Cnt As Object
    Dim Rst As Object
    Dim Tableau As Variant
    Dim strSQL As String
    Dim Repertoire As String, Classeur As String
    Dim NomFeuille As String

    Repertoire = ThisWorkbook.Path & "\"
    Classeur = "ListeAgences.xls"
    'Ne pas oublier d'ajouter le symbole $
    NomFeuille = "ListeAG$"
    strSQL = "SELECT * FROM [" & NomFeuille & "];"

    Set Cnt = CreateObject("ADODB.Connection")
    Cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Repertoire & Classeur & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"

    Set Rst = CreateObject("ADODB.Recordset")
    Rst.Open strSQL, Cnt, 1
    Tableau = Rst.GetRows

    With ListBox1
        .Clear
        .ColumnCount = Rst.Fields.Count
        .List = Application.Transpose(Tableau)
        .ListIndex = -1
    End With

    Rst.Close
    Cnt.Close
    Set Rst = Nothing
    Set Cnt = Nothing

End Sub

bonne soirée

michel

Bonjour le forum,

Encore un souci de réglé grace à vous... Un grand merci à Michel pour ce code qui fonctionne parfaitement et qui lance mon userform pratiquement instantanément... Je suis impressionné...

Merci encore à vous !

Rechercher des sujets similaires à "accelerer procedure vba userform"