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 :

Récupération de données Access pour un formulaire Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Récupération de données Access pour un formulaire Excel
    Bonjour tout le monde,
    je viens de commencer le VBA et je cherche à mettre en place un formulaire dynamique sur Excel. J'ai des categories que je selectionne avec un OptionButton et après en fonction de la catégorie selectionnée, je voudrais pouvoir modifier le contenu de la listBox detailTheme. Mais les "details des categories" sont stockés sous une base Access.

    J'ai un probleme au niveau de la connection a la database Access (ligne 7)
    Il me dit "erreur 3706, impossible de trouver le fournisseur. Il est peut être mal installé".

    J'ai importé la librairie ADODB mais y en a t'il une autre a importer? Pourquoi ne reconnait-il pas le chemin d'acces de la base ? Et sinon ya t'il un autre moyen de faire.

    J'ai mis tout le code mais bon vu qu'à partir de la ligne 7, il plante, je sais ps si ça marche

    Je remercie tous ceux qui prendront le temps de lire ce message

    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
    1  Dim cnnConn As ADODB.Connection
    2  Dim rstRecordset As ADODB.Recordset
    3  Dim cmdCommand As ADODB.Command
     
    'Ouvrir la connection
    4  Set cnnConn = New ADODB.Connection
    5  With cnnConn
    6    .ConnectionString = "Provider=Microsoft.Jet.OLEBD.4.0"
    7    .Open "C:\DictionnaireDonnees.mdb"
    8  End With
     
    ‘La commande
    9  Set cmdCommand = New ADODB.Command
    10 Set cmdCommand.ActiveConnection = cnnConn
    11 With cmdCommand
    12     .CommandText = "SELECT nomAppl " & _
    13                            "FROM dictionnaire " & _
    14                            "WHERE nomTable = 'Acxiom'" & _
    15                            "ORDER BY nomAppl"
    16     .CommandType = adCmdText
    17     .Execute
    18 End With
     
    'On ouvre le recordset.
    19 Set rstRecordset = New ADODB.Recordset
    20 Set rstRecordset.ActiveConnection = cnnConn
    21 rstRecordset.Open cmdCommand
     
    'On s'assure qu'on a recupere l'enregistrement
    22 If Not rstRecordset.EOF Then
    23 UserForm1.detailTheme.Clear
    24 For Each i in rstRecorder
    25     UserForm1.detailTheme.AddItem rstRecorder(i)
    26 Next i
    27 Else
    28     MsgBox "Erreur", vbCritical
    29 End If
     
    'Fermeture de la connexion et initialisation
    30 cnnConn.Close
    31 Set cmdCommand = Nothing
    32 Set rstRecordset = Nothing
    33 Set cnnConn = Nothing


    Je fais du vb depuis 2 jours et c’est bien mais on trouve pas tous bien que ce forum m’ai pas mal aidé

    Peut-être que j’ai une librairie à importer en plus de celle ADODB

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dbPath = "C:\DictionnaireDonnees.mdb"
    cnnConn.Open "Driver={Microsoft Access Driver (*.mdb)};DriverID=25;DBQ=" & dbPath & " "
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dbPath = "C:\DictionnaireDonnees.mdb"
    cnnConn.ConnectionString = "ODBC;DBQ=" & dbPath & ";" & "Driver={Microsoft Access Driver (*.mdb)};"
    cnnConn.Open

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dbPath = "C:\DictionnaireDonnees.mdb"
    cnnconn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                    "data source=" & dbpath & ";"
    Michel

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut
    Merci, j'ai testé les trois solutions, à priori ça marche, ça m'a pas fait d'erreur dessus. Je prefère la troisième qui paraît la plus simple mais je prends note des autres.
    Je dis a priori car pour linstan fo k j debug l'affichage des données récupérées donc je suis pas sure de bien avoir les données, je confirmerais ça après. Mais d'un aitre côté si je rentre dans mon If Not rstRecordset.EOF ça devriut vouloir dire que c'est bon, non ?
    Je trouve la solution et je vous confirme que c'est bon

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut
    C'est bon, je confirme que ça marche nikel pour les 3 possibilités
    Encore merci

    Pour informations, j'ai donc remplacé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    24 For Each i in rstRecorder
    25     UserForm1.detailTheme.AddItem rstRecorder(i)
    26 Next i
     
    Par :
     
    Do While Not rstRecordset.EOF
        DonneesForm.detailTheme.AddItem rstRecordset.Fields(0)
        rstRecordset.MoveNext
    Loop

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/06/2009, 15h34
  2. Réponses: 4
    Dernier message: 20/02/2007, 11h07
  3. Réponses: 3
    Dernier message: 13/08/2006, 10h50
  4. Réponses: 2
    Dernier message: 02/08/2006, 10h32
  5. Réponses: 3
    Dernier message: 20/10/2005, 12h42

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