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

VBA Access Discussion :

Portage code publipostage Access 2000 vers 2010


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Par défaut Portage code publipostage Access 2000 vers 2010
    Bonjour,

    depuis des années le code suivant fonctionne dans ma version Access/Word 2000 sans aucun problème :

    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
            With .ActiveDocument.MailMerge
                    .OpenDataSource _
                        Name:="MaDB.mdb", _
                        LinkToSource:=True, _
                        AddToRecentFiles:=False, _
                        Connection:="QUERY qryNom", _
                        SubType:=wdMergeSubTypeWord2000
     
                    .DataSource.QueryString = _
                        "SELECT * FROM qryNom] " & _
                            "WHERE NoDonnée = " & intNoDonnée
     
                    .Destination = wdSendToPrinter
                    .Execute
            End With
    Mais il m'est impossible de le faire fonctionner sous Access/Word 2010.

    J'ai une erreur à la ligne OpenDataSource qui m'explique que la base a été verrouillée par l'utilisateur et que Word ne peut pas y accéder. Access crashe alors.

    Comment adapter ce code alors ?

    Merci pour l'aide,

    Stefan

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 038
    Par défaut
    Bonsoir,
    je me suis frotté à cette difficulté la semaine passée;
    Vois la discussion si ça peut t'aider.
    http://www.developpez.net/forums/d95...-publipostage/


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Par défaut
    J'ai lu ta discussion et essayé ton code mais je me heurte toujours au message d'erreur :

    "La base de données a été placée dans un état par l'utilisateur ' username ' sur l'ordinateur ' machinename ' empêchant d'être ouverte ou verrouillée".

    Je me demande donc pourquoi la base n'est pas accessible et comment résoudre ça.

    Petite question supplémentaire. Ta ligne :

    À quoi correspond ce .name ?

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 038
    Par défaut
    maDb.name correspond au chemin complet de la base

    As-tu ajouté l'argument ConfirmConversions:=True,
    à .Opendatasource ? (c'est lui qui te permet de sélectionner une liaison DDE) ?


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Par défaut
    J'ai bien ajouté la ligne ConfirmConversions=True.

    J'ai fait aussi une expérience :

    J'ai copié ma DB dans le même dossier. Elle s'appelle alors "maDB - Copie.mdb".
    Au lieu de se connecter sur la DB Access en cours d'exécution du code VBA, elle devra se connecter sur sa copie dans le même dossier.

    Miracle : ce code fonctionne sans message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            With .ActiveDocument.MailMerge
                    .MainDocumentType = wdFormLetters
                    .OpenDataSource _
                        Name:=dbName, _   ' dbName = "dbName - Copie"
                        ConfirmConversions:=True, _
                        ReadOnly:=True, _
                        SQLStatement:=strSQL
     
                    .Destination = wdSendToPrinter
                    .Execute Pause:=False
            End With
    C'est donc la connexion de la DB à une requête (dans mon cas) qu'elle contient qui semble précisément poser problème.

    Je vais encore expérimenter deux choses :

    1. l'ancien code d'Access 2000 tel quel
    2. une macro de publipostage avec les mêmes paramètres mais à partir de Word


    Je te tiens au courant.

    N.B. : Je précise que j'ai vérifié dans les options :
    Paramètres du client | Avancé | Mode d’ouverture par défaut | Mode Partagé
    Paramètres du client | Avancé | Verrouillage par défaut | Aucun

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 038
    Par défaut
    Bizarre, avec ce type de code, j'arrivais à faire mon publipostage sans erreur. Le problème était que l'instance de la base (ouverte par .opendatasource ...) restait ouverte

    Une condition nécessaire cependant à vérifier : préalablement, ton fichier modèle de publipostage doit avoir comme données source une requête valide de ta base de données


Discussions similaires

  1. Problèmes suite à migration ACCESS 2000 vers 2010
    Par buzuck20 dans le forum Access
    Réponses: 1
    Dernier message: 23/06/2014, 23h06
  2. portage de code de vba 2000 vers vba 2010
    Par Patnel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/09/2012, 10h19
  3. DAO de ACCESS 2000 vers ACCESS 2
    Par cascar31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/05/2007, 22h25
  4. migration de access 2000 vers access 2003
    Par progima dans le forum Access
    Réponses: 3
    Dernier message: 30/11/2005, 10h38
  5. Réponses: 3
    Dernier message: 26/09/2005, 15h20

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