Publipostage partagé : ONEDRIVE (BDD Excel, Doc Word)

Fermé
Stephfun Messages postés 9 Date d'inscription mercredi 3 mars 2021 Statut Membre Dernière intervention 20 mai 2021 - Modifié le 23 mars 2021 à 10:44
Stephfun Messages postés 9 Date d'inscription mercredi 3 mars 2021 Statut Membre Dernière intervention 20 mai 2021 - 24 mars 2021 à 15:20
Bonjour à tous,

J'ai une base de données (BDD) Excel que j'utilise pour faire du publipostage (via un UserForm) sur différents documents Word types (dans un dossier DWT). Tout fonctionne très bien.

J'aimerai que mon travail puisse être utilisé par plusieurs utilisateurs pour alimenter la base, ce pourquoi je l'ai déposé sur un OneDrive partagé. J'ai été confronté à un premier problème pour déclarer le chemin vers les documents types : la spécificité de l'identifiant X de l'utilisateur soit C:\Users\X\CheminONEDRIVE\DWT

J'ai réussit à résoudre le problème : en cliquant sur un bouton, n'importe quel utilisateur peut accéder au DWT synchronisé sur son bureau.

MALHEUREUSEMENT le problème persiste lorsqu'on accède à un document type TYPE.doc. Une erreur indique que le chemin pour trouver la base de donnée C:\Users\Xinitial\CheminONEDRIVE\BDD n'est pas connu. Avec Xinitial l'identifiant du dernier utilisateur qui a enregistré sa base de donnée pour la sélection des destinataires. Ainsi des manipulations pénibles s'en suivent : modifier les propriétés des liaisons de données (qui fonctionne une fois sur 3 on dirait) puis renseigner la nouvelle base de données etc...

En effet, j'aimerai que la sélection des destinataires sur Word se fasse automatiquement, sans que quiconque n'ait à le faire. En gros, en appuyant sur le bouton du UserForm pour accéder au DWT, l'utilisateur clique sur TYPE.doc puis accède directement au document publiposté.

Pour se faire, j'ai pensé à directement enregistrer une macro sur le document word TYPE.doc :


Sub Document_Open()
Dim xuser As String
Dim src As Variant

Set oWSHShell = CreateObject("WScript.Shell")
Cheminbureau = oWSHShell.SpecialFolders("Desktop")
xuser = UCase(Split(Cheminbureau, "\")(2)) 'Récupération de l'X utilisateur
src = "C:\Users\" & xuser & "CheminONEDRIVE\BDD"

ActiveDocument.MailMerge.OpenDataSource Name:= _ 'Macro enregistrée
"C:\Users\" & xuser & "CheminONEDRIVE\BDD" _
, 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=src;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLED" _
, SQLStatement:="SELECT * FROM `Feuille1$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
End Sub


En gros, à l'ouverture du document, le chemin vers la base de données BDD est déclaré automatiquement (sélection des destinataires)

MALHEUREUSEMENT cela ne fonctionne pas. En effet, depuis le UserForm, lorsqu'on accède au DWT puis qu'on sélectionne notre document TYPE.doc, ce dernier ne s'ouvre pas vraiment. Il souhaite d'abord sélectionner les champs et trouver la base de données (qu'on doit alors retrouver manuellement). C'est ici que je bloque, je ne sais plus où chercher.

Auriez-vous des idées ou des pistes pour me guider s'il vous plaît ?

Objectif : Sélectionner qu'une seule fois les destinataires puis ne plus jamais le faire par aucun autre utilisateur => générer directement un document WORD via le UserForm Excel.

Merci d'avance pour l'aide précieuse que vous apporterez.

Stephfun
A voir également:

1 réponse

Stephfun Messages postés 9 Date d'inscription mercredi 3 mars 2021 Statut Membre Dernière intervention 20 mai 2021 1
24 mars 2021 à 15:20
Bonjour,

Je comprends que le sujet semble complexe et puisse faire fuire certaines personnes... mais j'ai vraiment besoin d'aide pour le coup... Je pense qu'en s'y mettant à plusieurs (avec les expériences de chacun) on peut résoudre un problème qui pourrait aider d'autres personnes plus tard.

Stephfun
1