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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    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
    2 917
    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 : 2 917
    Points : 4 818
    Points
    4 818
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    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
    2 917
    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 : 2 917
    Points : 4 818
    Points
    4 818
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    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
    2 917
    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 : 2 917
    Points : 4 818
    Points
    4 818
    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


  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    La validité ne doit pas être compromise puisque je n'ai strictement rien changé.

    Donc je confirme mon point 2 : ça marche impeccable.
    Point 1 : si j'ouvre mon document principal de fusion dans Word et je procède à la souris au choix de la base de données, j'obtiens le même message d'erreur.

    Comment ma DB peut être verrouillé alors que je n'ai rien verrouillé du tout et que, par ailleurs, les options montrent qu'il n'y a pas verrouillage ?

    Je précise qu'il y a donc le message d'erreur puis ouverture d'une 2e instance de la base qui reste bloquée et ne se referme pas. Et c'est là que c'est curieux : après avoir cliqué sur le bouton OK du message d'erreur et après avoir refermé la 2e instance de la BD ouverte, le publipostage sort (parfois !) à l'imprimante comme prévu. D'autres fois, le programme reste planté.

    Bizarre...

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