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 :

Connexion à une base de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut Connexion à une base de données
    Bonjour à tous,

    Je crée cette macro devant réaliser un publipostage à partir d'Excel 2007. Elle ouvre le document principal .docx et vient normalement chercher la base de données, en l'occurence une plage de données nommées dans le fichier Excel.

    Cette macro provient d'un tuto sur le fofo mais j'ai un problème de liaison avec ma table, elle ne la trouve pas...

    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
    Private Sub commandButton6_Click()
        'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
        Dim docWord As Word.Document
        Dim appWord As Word.Application
        Dim NomBase As String
        
        NomBase = "C:\Documents and Settings\FRED\Bureau\FichierExcel\DonnéesclientTestpubli.xls"
     
        Application.ScreenUpdating = False
        Set appWord = New Word.Application
        appWord.Visible = True
        'Ouverture du document principal Word
        Set docWord = appWord.Documents.Open("C:\Documents and Settings\Trame publipostage_Appels de fond2_Testpubli.doc")
        
        'fonctionnalité de publipostage pour le document spécifié
        With docWord.MailMerge
        'Ouvre la base de données
        .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM [Feuil1$]"
        'Spécifie la fusion vers l'imprimante
        .Destination = wdSendToPrinter
        .SuppressBlankLines = True
            'Prend en compte l'ensemble des enregistrements
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
        'Exécute l'opération de publipostage
        .Execute Pause:=False
        End With
        
        Application.ScreenUpdating = True
     
        'Fermeture du document Word
        docWord.Close False
        appWord.Quit
    End Sub
    D'où cela pourrait provenir, le doc Word s'ouvre donc c'est bien un dossier principal de publipostage, j'ai activé la réf Microsoft Object Library...

    Merci de votre aide et bon aprem

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    L'erreur est indiqué à ses lignes ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM [Feuil1$]"
    Je n'arrive pas à tout comprendre, mais cela va déjà ouvrir la base de données "qui ne trouve pas", d'où mon problème.
    Le .xls ne devrait pas être .xlsm sous 2007 et la commande "Feuil1$" doit correspondre, si je comprend, à la feuille de mon classeur où est contenu ma plage de données?

    (est-ce qu'il y a un .xx particulier pour les plages de données?)

    Voilà plus d'explication. Merci

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    En faite le chemin d'accès vers une base de données est particulier et il faut se référer à Mes Documents = Source de données ce qui donne le chemin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\Fréd\Mes documents\Mes sources de données\Client et appels de fond_Testpubli DonnéesclientTestpubli.odc
    Bon aprem

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    Intéressant comme post..
    tu poses ta question et la résoud tout seul

    Faut toujours chercher à réfléchir avant de demander de l'aide.... c'est comme çà que l'on apprend plutot que de récuper un truc tout fait

    Cependant, féliciations quand même d'avoir continuer à chercher et de ne pa savoir attendu la réponses toute faite
    Merci d'avoir indiqué ta solution à tout le monde

    Tout le monde devrait en faire autant

  5. #5
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Par défaut
    Bonjour à tous,

    Je me permets de réouvrir ce topic qui date de 2008...

    J'ai exactement le même problème mais je n'arrive pas à le résoudre. Je précise que je suis sous excel 2016 et que tout marchait bien jusqu'à aujourd'hui.

    Le curseur s'arrête à ce moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'fonctionnalité de publipostage pour le document spécifié
        With docWord.mailMerge
            'Ouvre la base de données
            .OpenDataSource Name:=NomBase, _
                Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & NomBase & "; ReadOnly=True;", _
                SQLStatement:="SELECT * FROM [ID_Supplier$]"
                'Prend en compte l'ensemble des enregistrements
    Je ne comprends absolument pas.

    Une mise à jour a eu lieu dans le PC de mon entreprise il y'a quelques jours et on est passé sous Microsoft Office 365 ProPus

    Est ce un problème au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
    ?

    J'ai pourtant changé .xls par .xlsm; .xlsx mais rien n'y fait. Toujours le même problème.

    J'ai aussi vérifié mes chemin d'accès et tout à l'air d'être correct;

    Est ce que quelqu'un aurait une idée?

    Merci par avance

    Cordialement

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

Discussions similaires

  1. Pool de connexion à une base de données en java
    Par ppaul127 dans le forum JDBC
    Réponses: 3
    Dernier message: 15/12/2005, 17h03
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

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