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

Word Discussion :

Alimenter Liste déroulante avec une requête Access. Puis choix => modifie le publipostage


Sujet :

Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Alimenter Liste déroulante avec une requête Access. Puis choix => modifie le publipostage
    Bonjour à la communauté.
    J'ai écumé (mais peut-être pas assez) le forum word et access pour essayer de trouver la solution, mais en vain.

    Dans ma base de données Access 2013, j'ai une requête avec entre autre :
    • un ID,
    • un Nom
    • un Prénom


    1ère étape
    Dans Word, j'ai une liste déroulante (nommée "ChoixEleve"). Je voudrais, à l'ouverture de mon document Word, que cette liste déroulante soit alimentée par les champs de ma Requête, avec cet ID, un tiret entre les deux - et la concantenation du nom et du prénom. Quelque chose apparaissant ainsi dans la liste déroulante : "53 - Prénom NOM" ...

    2è étape
    Si je choisis un élément de cette liste déroulante, mon document Word mettra à jour tous les champs de publipostage.

    Pour l'instant la connexion avec Access 2013 a été faite, avec le code suivant (macro enregistrée). Mes champs de publipostage sont fonctionnels en utilisant "Aperçus des résultats". Mais je veux aller plus loin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        'Ouverture BDD
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "D:\Travail\ER_2014_2015\Base_eleves\BaseElevesRuru.accdb", _
            ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\Travail\ER_2014_2015\Base_eleves\BaseElevesRuru.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Lockin" _
            , SQLStatement:="SELECT * FROM `Req_GevaSco`", SQLStatement1:="", SubType _
            :=wdMergeSubTypeAccess
    Il me manque juste cette liste déroulante alimentée par Access qui permettrait la mise à jour de l'ensemble du document Word.

    J'avais réussi (grâce à ce forum) à alimenter ma liste déroulante avec Excel, et actualiser tout le document Word (c'est la valeur du ID qui actualisait en fait). Maintenant, je veux faire la même chose ... mais avec Access.

    Merci par avance de votre aide. Bonne fin de journée à vous.

    PS : J'utilise Word 2013 - Access 2013 et VBA.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si j'ai bien compris, tu veux faire un publipostage avec le seul enregistrement qui serait choisi dans une liste déroulante Access ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour.
    Oui en très synthétique c'est ça.

    1. La liste déroulante est alimentée par BaseElevesRuru.accdb (apparaît l'ID, le Prénom et le Nom)
    2. Je choisis (l'ID de) l'élève dans la liste déroulante
    3. Et cela me met à jour l'ensemble de mon document.


    Espérant avoir été suffisamment explicite.

    Merci par avance.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Uniquement pour un document, celui qui est choisi dans le formulaire de la DB.

    Si c'est le cas, un publipostage n'est pas nécessaire, on peut injecter les données Access sur des signets présents dans le document.

    Une piste là : http://heureuxoli.developpez.com/off...stage/#LVIII-D
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonsoir.
    Alors suite à l'orientation sur le tuto, je pense avoir trouvé et ai déjà mis cela en place.

    Par contre, difficilement lisible, un peu long à charger et si je veux actualiser quelque chose dans ma base de données (ouverte en même temps) j'ai ce retour de message. :
    "Microsoft ne peut pas enregistrer les modifications de conceptions ou effectuer un enregistrement dans un nouvel objet de base de données car le fichier est ouvert par un autre utilisateur ... un accès exclusif au fichier."

    Besoin d'un avis éclairé.


    Merci par avance.

    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
     
    Private Sub Test_Click()
    'Ouverture BDD via clic de bouton - phase test - mais normalement c'est sur Sub Document_Open()-
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "D:\Travail\ER_2014_2015\Base_eleves\BaseElevesRuru.accdb", _
            ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\Travail\ER_2014_2015\Base_eleves\BaseElevesRuru.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Lockin" _
            , SQLStatement:="SELECT * FROM `Req_GevaSco`", SQLStatement1:="", SubType _
            :=wdMergeSubTypeAccess
     
    'Declaration des variables
    Dim ChoixID, ChoixNom, ChoixPrenom As Object
    Dim ReqtPublipostage As Object
    Dim NbEnr, EnregistrementIndex, EnregistrementValeur As Integer
     
    Set ReqtPublipostage = ActiveDocument.MailMerge.DataSource
    NbEnr = ReqtPublipostage.RecordCount
     
    'Remplissage Zone de liste déroulante
    With ChoixEleve
        For i = 1 To NbEnr
            .AddItem i & " - " & ReqtPublipostage.DataFields("Prénom").Value & " " & ReqtPublipostage.DataFields("Nom").Value
                    ReqtPublipostage.ActiveRecord = wdNextRecord
        Next i
    End With
     
    End Sub

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce sont des paramètres Access.
    Probablement qu'un autre utilisateur ouvre la DB en mode exclusif, c'est à dire qu'il se réserve tous les droits sur la DB. Ce n'est probablement pas souhaité par cette personne.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bnjr,
    j'ai essayé dans le paramètres client de mettre l'accès en mode partagé.
    Le problème ne semble pas plus être réglé.
    Désormais, pour ouvrir le fichier Word, cela met plus de 5 minutes.
    Je suis un peu désabusé et sens que je vais rapidement revenir à mon bidouillage avec Excel (moins complet mais qui marchait très bien).
    Je ne vois vraiment plus comment faire et n'ayant pas utilisé la méthode via DAO, je ne vois absolument plus par quel bout m'y prendre.
    Merci pour les conseils.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu as bidouillé le code du tuto avec le code que tu avais probablement obtenu via l'enregistreur de macro.

    Ces deux codes sont incompatibles.

    Si tu fais ta sélection dans Access via un formulaire, tu peux utiliser le contenu des contrôles du formulaire pour générer ton document.

    Mais on n'est plus dans du publipostage.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette aide.
    J'ai donc opté pour une méthode avec signets.
    Et au lieu de faire du publipostage, je gère les éléments complexes au sein de ma base de données via formulaire et état (ce qui est finalement bien plus simple et plus rapide).
    Et pour la création des mes feuilles où apparaissent uniquement les nom et prénom, je gère avec Word. Access commande Word (et nom Word appelle Access pour du publipostage).
    C'est nettement plus simple effectivement.
    Bonne soirée.

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

Discussions similaires

  1. Modification de liste déroulante dans une requête access
    Par Barbare01 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/12/2014, 10h05
  2. Remplir une zone de liste Excel avec une requête Access (problème)
    Par Tontorise dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/05/2007, 14h26
  3. [Source][VBA-E] Remplir une zone de liste Excel par une requête Access
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/01/2007, 13h26
  4. [Oracle] Remplir une liste déroulante avec une table
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/12/2006, 15h26
  5. [MySQL] alimenter une liste déroulante via une requête
    Par stefon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2006, 13h32

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