Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA Besoin d'aide !

4 réponses
Avatar
Gen
Bonjour,

Je voulais créer une macro en excel qui me permettrais de fusionner vers un
document word. Voici le code que j'utilise et qui fonctionne en partie.

Sub test2()

Dim AppWord As Object
Dim Chemin, Fichier, Chemin_Fichier, Source As String
Sheets("Feuil1").Select
Source = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name


Set AppWord = CreateObject("Word.Application")
Set WdDoc = AppWord.Documents.Open("C:\Document.doc")

With WdDoc
.Application.Visible = True
.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
.Application.Visible = True

' Ferme le doc ayant servi de modèle sans l'enregistrer
.Close (False)

End With

' Active Word
Application.ActivateMicrosoftApp xlMicrosoftWord

' Libère la mémoire
Set WdDoc = Nothing


End Sub

Je rencontre 1 problème. Le premier est à la ligne :

.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True

Là, je dois aller dans le fichier word et sélectionner la feuille où se
trouve les données, cependant, je voudrais que ça se fasse automatiquement.

Est-ce que quelqu'un peut m'aider avec ce problème ?

Merci !

4 réponses

Avatar
Anacoluthe
Bonjour !

'Gen' nous a écrit ...
Je rencontre 1 problème. Le premier est à la ligne :
.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True
Là, je dois aller dans le fichier word et sélectionner la feuille où se
trouve les données, cependant, je voudrais que ça se fasse automatiquement.


Vous ne renseignez qu'une partie des paramètres de la méthode OpenDataSource
Il est donc normal que Word vous demande le reste !
Avec l'enregistreur de macro faites une connexion aux données 'à la main'
et servez-vous du code enregistré pour corriger votre macro. Les
paramètres qui manquent sont ceux de requête SQL

Autre piste éventuelle : enregistrez le document principal Document.doc
avec sa connexion aux données. Son ouverture rétablira la connexion à la
DataSource sans avoir besoin de faire un Mailmerge.OpenDataSource

Il faudra aussi inhiber le message d'alerte de la sécurité SQL si
vous voulez que TOUT soit automatique (c'est dans la faq Word ça).

Anacoluthe
« Le temps est comme un fleuve, il ne remonte pas à sa source. »
- RIVAROL

Avatar
Gen
Bonjour !

Vous ne renseignez qu'une partie des paramètres de la méthode OpenDataSource
Il est donc normal que Word vous demande le reste !


Je sais, mais lorsque je les déclare je rencontre d'autres problèmes !

Avec l'enregistreur de macro faites une connexion aux données 'à la main'
et servez-vous du code enregistré pour corriger votre macro. Les
paramètres qui manquent sont ceux de requête SQL


L'enregistreur de macro n'enregistre pas lorsque j'utilise le publipostage
et je ne sais pas pourquoi ?

Autre piste éventuelle : enregistrez le document principal Document.doc
avec sa connexion aux données. Son ouverture rétablira la connexion à la
DataSource sans avoir besoin de faire un Mailmerge.OpenDataSource


Cette option n'est malheureusement pas envisageable pour ce que j'ai besoin
de faire.

Avez-vous une solution qui puisse m'aider ?

Merci !



Bonjour !

'Gen' nous a écrit ...
Je rencontre 1 problème. Le premier est à la ligne :
.MailMerge.OpenDataSource Name:=Source, LinkToSource:=True
Là, je dois aller dans le fichier word et sélectionner la feuille où se
trouve les données, cependant, je voudrais que ça se fasse automatiquement.


Vous ne renseignez qu'une partie des paramètres de la méthode OpenDataSource
Il est donc normal que Word vous demande le reste !
Avec l'enregistreur de macro faites une connexion aux données 'à la main'
et servez-vous du code enregistré pour corriger votre macro. Les
paramètres qui manquent sont ceux de requête SQL

Autre piste éventuelle : enregistrez le document principal Document.doc
avec sa connexion aux données. Son ouverture rétablira la connexion à la
DataSource sans avoir besoin de faire un Mailmerge.OpenDataSource

Il faudra aussi inhiber le message d'alerte de la sécurité SQL si
vous voulez que TOUT soit automatique (c'est dans la faq Word ça).

Anacoluthe
« Le temps est comme un fleuve, il ne remonte pas à sa source. »
- RIVAROL




Avatar
Geo

Bonjour,

Je voulais créer une macro en excel qui me permettrais de fusionner vers un
document word. Voici le code que j'utilise et qui fonctionne en partie.


[...]

Là, je dois aller dans le fichier word et sélectionner la feuille où se
trouve les données, cependant, je voudrais que ça se fasse automatiquement.


Mettez vos données sous forme de tableau tout au début de votre
document word.
Si ce n'est pas possible, créez un nouveau document et recopiez-y vos
données.

--
A+

Avatar
Anacoluthe
Bonjour !

'Gen' nous a écrit ...
L'enregistreur de macro n'enregistre pas lorsque j'utilise le publipostage
et je ne sais pas pourquoi ?


??? Dans un document principal l'enregistreur de macro enregistre
correctement une opération OpenDataSource. Très ancienne version Word ??
Admettons que vous ne pouviez l'enregistrer, rien ne vous empêche d'aller
lire la QueryString de la DataSource une fois qu'elle est connectée.
Et sinon voyez la syntaxe de OpenDataSource et complétez votre code
avec les bons paramètres pour votre source de données, le protocole
d'accès et la requête qui va avec...

Avez-vous une solution qui puisse m'aider ?


Ben faudrait d'abord savoir où est le problème :-p
En principe il n'y en a plus si vous connectez complètement vos données...

Anacoluthe
« Le temps est comme un fleuve, il ne remonte pas à sa source. »
- RIVAROL