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 :

Publipostage depuis Excel, échec de la liaison "lettre-type - 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é
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 73
    Par défaut Publipostage depuis Excel, échec de la liaison "lettre-type - base de données"
    Bonjour à tous,
    Je travaille avec Office 2003.
    J’ai un classeur excel contenant une série de macros qui ,entre autres, exécutent des publipostages. L’ensemble fonctionnait parfaitement depuis plusieurs mois.
    Mais depuis quelques jours, rien de va plus !
    Le programme bloque au lancement du premier publipostage : une fenêtre "Propriétés des liaisons de données " s’affiche.
    Je teste la connexion et j'ai un message d'échec se terminant par "Erreur inattendue du pilote de base de données externes(1)".
    Ce n'est que lorsque je parviens à en sortir en cliquant sur tous les "Annulez" que j'ai le message "Erreur 5922 : Word n'a pas pu ouvrir la source de données".
    Ci-dessous, le code sur lequel se produit le blocage.
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Sub Reçus_Mail_Séparés()
        '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
        Dim NomFicherWord As String
     
         NomBase = ThisWorkbook.Path & "\Base reçus par Mail.xls"
        NomFicherWord = ThisWorkbook.Path & "\Reçu Lettre Type.doc"
     
     Application.DisplayAlerts = False
     
         Application.ScreenUpdating = False
        Set appWord = New Word.Application
        appWord.Visible = True
        'Ouverture du document principal Word :
        Set docWord = appWord.Documents.Open(NomFicherWord)
     
        'Fonctionnalité de publipostage pour le document spécifié :
        With docWord.MailMerge
            .MainDocumentType = wdFormLetters
            'Ouvre la base de données :
            .OpenDataSource Name:=NomBase, _
                Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & NomBase & "; ReadOnly=True;", _
                SQLStatement:="SELECT * FROM [Abonnés$]", _
            SQLStatement1:="", SubType:=wdMergeSubTypeAccess
    ' Déclaration des variables
    Dim iR As Long
    Dim I As Long
    Dim DocName As String
     
         Application.ScreenUpdating = False
     
    iR = docWord.MailMerge.DataSource.RecordCount
    Debug.Print iR
    For I = 1 To iR
        With docWord.MailMerge
            'Définition du premier et dernier enregistrement
            .DataSource.FirstRecord = I
     
            .DataSource.LastRecord = I
            ' Envoi des données dans un nouveau document
            .Destination = wdSendToNewDocument
            ' Exécution du publipostage
            Application.ScreenUpdating = False
            .Execute
     
        'Affichage du message d'attente :
        Load Patience2
        Patience2.Show vbModeless
        Patience2.Repaint
     
            ' Actualisation de l'enregistrement pour la sauvegarde
            .DataSource.ActiveRecord = I
            'Utilisation de deux champs pour obtenir le nom du document
            DocName = .DataSource.DataFields(3).Value
            DocName = DocName & "-" & .DataSource.DataFields(2).Value
            'DocName = DocName & "-" & "Don n" & .DataSource.DataFields(9).Value
            Debug.Print DocName; I
        End With
     
     
        ' Sauvegarde du document publiposté
        With appWord.ActiveDocument
            .SaveAs ThisWorkbook.Path & "\Dons Reçus par Mail " & An & "\" & DocName & " Don " & An & ".doc"
             .Close
        End With
       Next I
      End With
     
       Application.ScreenUpdating = True
      Application.DisplayAlerts = True
     
         'Fermeture du document Word
        docWord.Close False
        appWord.Quit
     
      Call Reçus_Mail_Collés
     
      End Sub
    Au débogage, ce sont les lignes 23 à 27 qui s'affichent sur fond jaune.

    Le même phénomène se produit avec tous mes classeurs qui contiennent des macros de publipostage. Mes recherches sur le net n’ont rien donné.
    Merci d'avance à ceux qui pourront m'aider à rétablir la liaison.
    Et bien cordialement à tous.
    Homère

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Il me semble que ReadOnly est un argument de la méthode OpenDataBase.
    Dans l'argument Connection, j'ai souvenir qu'on utilise plutôt "Mode=Read". Mais c'est très dépendant de la base à laquelle on se connecte...

    Que se passe-t-il si vous modifiez la ligne qui cause l'erreur de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .OpenDataSource Name:=NomBase, _
                Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & NomBase, ReadOnly=True, _
                SQLStatement:="SELECT * FROM [Abonnés$]", _
                SQLStatement1:="", SubType:=wdMergeSubTypeAccess

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 73
    Par défaut
    Bonsoir Ben L,
    Et merci pour la réponse ultra rapide.
    Je viens de tester en ayant introduit les lignes de votre proposition.
    J'ai le message "Erreur de compilation : erreur de syntaxe".
    Le blocage se fait sur les lignes remplacées.
    Je suis désolé... mais je garde le moral !
    Bonne soirée
    Homère

  4. #4
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Autre
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Par défaut
    Bonjour Homère,

    Je rencontre le même soucis avec des fichiers du travail. Nous sommes aussi sur Office 2003. Début septembre, mes fichiers avec publipostage ou avec importation de données fonctionnaient correctement.
    Depuis début octobre, plus rien ne fonctionne. Lorsque je lance un fichier avec publipostage ou une importation de données externes, la fenêtre "Propriétés des liaisons de données" s'affiche. En testant la connexion, le message d'erreur suivant s'affiche "Echec du test de connexion en raison d'une erreur survenue lors de l'initialisation du fournisseur. Erreur inattendue du pilote de base de données externe (1)". Le fournisseur sélectionné dans les propriétés est Microsoft Jet 4.0 OLE DB Provider.
    En sélectionnant le fournisseur MSDataShape, en renseignant manuellement l'emplacement de ma source de données dans l'onglet connexion, et dans les propriétés avancées cocher le "Read", il me refait cette erreur mais si je passe outre le problème, j'ai de nouveau le lien qui s'effectue. Ce lien reste actif même après enregistrement du fichier. Ca fait très bicolage je vous l'accorde.
    En tout cas, je suis presque soulagé de ne pas être le seul à rencontrer ce problème.

    Bonne journée,

    Roelem

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 73
    Par défaut
    Bonjour Roelem,

    Merci pour votre message.
    Comme vous; je suis presque soulagé de ne pas être le seul à subir ce bogue.
    Ce n'est donc pas une fausse manœuvre de ma part qui est en cause.
    Manifestement, il faut chercher du côté de Ms et ce n'est pas plus réjouissant . Le rétablissement de l'état antérieur n'est pas à l'ordre du jour.
    Je prends bonne note de votre "bricolage" et je vais l'essayer.c'est hors de question
    Mais pour un programme qui doit être utilisé par des novices en informatique, je vois d'ici les problèmes à venir !
    Merci encore et bien cordialement
    Homère

  6. #6
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Quelle méthode utilisez-vous pour vous connecter à votre base ?
    Et qu'est-ce que 'Abonnés' ? Une plage nommée ?

    Des exemples de chaînes de connexion sont fournis sur cette page pour effectuer une requête SQL dans un fichier Excel.
    Celle que vous utilisez est assez différente.
    Pourriez-vous indiquez de quelle source elle provient ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2014, 18h20
  2. Publipostage depuis Excel
    Par Vidra dans le forum Word
    Réponses: 3
    Dernier message: 26/11/2013, 20h42
  3. [XL-2003] Pilotage publipostage depuis excel : choisir les destinataires
    Par mazdav1 dans le forum Excel
    Réponses: 7
    Dernier message: 21/08/2013, 15h46
  4. Publipostage depuis Excel
    Par Pierrea4564 dans le forum Général VBA
    Réponses: 2
    Dernier message: 16/02/2011, 16h50
  5. Traitement Publipostage depuis excel
    Par tissou_vba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2007, 13h06

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