IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer une connexion avec une BDD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 22
    Par défaut Créer une connexion avec une BDD
    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

  2. #2
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 56
    Par défaut
    Bonsoir,

    Combobox formulaire alimenté par une base Access

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Private Sub UserForm_Initialize()
      'Microsoft Data Object 2.8 doit être coché
      repertoire = ThisWorkbook.Path & "\"
      Set cnn = New ADODB.Connection
      cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & repertoire & "Access2000.mdb"
      Set rs = cnn.Execute("SELECT nom_client FROM client Order By nom_client")
      Me.ComboBox1.List = Application.Transpose(rs.GetRows)
      rs.Close
      cnn.Close
      Set rs = Nothing
      Set cnn = Nothing
    End Sub
    Ceuzin

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Comment créer une connexion avec une base de données MySql en VBA
    Par jinkey dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2008, 15h39
  5. Comment faire une connexion dynamique à une base avec ADO?
    Par Borisam dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo