Bonjour,

Je dois remplir un combobox avec le nom des pays présents dans une table provenant de sql sever.
J'ai un exemple de code que j'ai récupéré d'une aplication qui remplit également des combobox avec des valeurs issues d'une table provenant de sql server et qui fonctionne lorsque je l'applique. Cependant lorsque je l'applique avec le nom de ma base ça ne fonctionne pas j'ai une erreur.

Voici le code :

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
42
43
44
45
46
47
48
49
50
51
 
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
 
    If Me.CBox_cedant.ListCount = 0 Then
        Set NewSheet = Worksheets.Add
        NewSheet.Name = "Pays"
 
        Dim datana As String
        Dim i As Integer
        Dim tem As String
 
        datana = "XLReE_Historical_SI"
 
        'Récupération des pays dans une nouvelle feuille        
        Worksheets("Pays").Range("A1").Activate
 
        With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=XLReE_Historical_SI;Description=Exposure Data;UID=1rroshan;APP=Microsoft Office 2003;WSID=CORMSUI8;DATABASE=XLReE_Historical_SI;Trusted_Con" _
        ), Array("nection=Yes")), Destination:=Excel.ActiveCell)
            .CommandText = "Select distinct COUNTRY from DETAILS"
            .Name = "Query EDM"
            .FielNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormating = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveComlumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
 
        'Ajout des pays dans la liste
 
        i = 2
        tem = Range("A2").Value
        Do While tem <> ""
            CBox_cedant.AddItem (Worksheets("Cedant").Cells(i, 1).Value)
            i = i + 1
            tem = Range("A" & i).Value
        Loop
 
        Application.DisplayAlerts = False
        Sheets("Pays").Delete
    End If
End Sub
On me renvoit une erreur "Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet".

Je ne comprends pas pourquoi j'ai une erreur alors que j'ai juste changer le nom de datana (et la requête aussi) et les deux bases sont stockées au même endroit. Sauriez-vous pourquoi j'ai cette erreur ?

Lorsque je mets des point d'arrets le programme bloque au moment de l'instruction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=XLReE_Historical_SI;Description=Exposure Data;UID=1rroshan;APP=Microsoft Office 2003;WSID=CORMSUI8;DATABASE=XLReE_Historical_SI;Trusted_Con" _
        ), Array("nection=Yes")), Destination:=Excel.ActiveCell)

Merci !


Ah et mis à part ça j'ai cherché comment établir une connexion entre une BDD provenant de sql server et un classeur Excel en vba et j'avoue être complétement perdue et ne rien y comprendre entre DAO, ADO, ODBC... Auriez-vous un lien ou un livre expliquant simplement toutes les méthodes leurs différences et dans quels cas les utiliser ? Merci aussi