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

publipostage auto : excel vers word

3 réponses
Avatar
linostarr
Bonjour,

Je suis newbie dans le monde de excel, disons que je bidouille,
j'ai trouvé sur le web un exemple de code
(ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf)
pour automatiser la génération d'un bon de commande via le publipostage
excel vers word.
J'ai donc crée une feuille excel nommé : "Carnet de Commande"
qui contient plusieurs colonne :
"Etats de la Commande" qui contient des états, ex : "Cmd à Passer"
"Fournisseur" qui contient des fournisseur, ex : "pro_sa"
....

Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Carnet de Commande$] WHERE [Etats de la Commande] = [Cmd
à Passer] And [Fournisseur] = [pro_sa]"

voici l'exemple du web que j'ai associé à un bouton :

Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application

Application.ScreenUpdating = False

Set appWord = New Word.Application
appWord.Visible = False

'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:\Commande.doc")

'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille

'ICI CA MERDOUM !!!

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Carnet de Commande$] WHERE [Etats de
la Commande] = [Cmd à Passer] And [Fournisseur] = [pro_sa]"
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With

'Fermeture du document Word
docWord.Close False
appWord.Quit

Application.ScreenUpdating = True
End Sub



Entre Excel VBA et SQL je trouve pas et ca fait trop d'un coup :-(
Lino
--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Finalement, mieux vaut se battre qu'avoir peur.
(Gandhi, Mohandas Karamchand, nommé le Mahatma - 1869 à 1948)

3 réponses

Avatar
isabelle
bonjour Lino,

à la page 4, il est mentionner de ne pas mettre d'espace :

Lorsque vous créez le nom des champs, respectez les conseils suivants:
Nom le plus court possible
Pas d'espace
Pas d'accent
Pas de caractères spéciaux

isabelle


Bonjour,

Je suis newbie dans le monde de excel, disons que je bidouille,
j'ai trouvé sur le web un exemple de code
(ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf)
pour automatiser la génération d'un bon de commande via le publipostage
excel vers word.
J'ai donc crée une feuille excel nommé : "Carnet de Commande"
qui contient plusieurs colonne :
"Etats de la Commande" qui contient des états, ex : "Cmd à Passer"
"Fournisseur" qui contient des fournisseur, ex : "pro_sa"
....

Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Carnet de Commande$] WHERE [Etats de la Commande] = [Cmd
à Passer] And [Fournisseur] = [pro_sa]"

voici l'exemple du web que j'ai associé à un bouton :

Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application

Application.ScreenUpdating = False

Set appWord = New Word.Application
appWord.Visible = False

'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:Commande.doc")

'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille

'ICI CA MERDOUM !!!

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Carnet de Commande$] WHERE [Etats de
la Commande] = [Cmd à Passer] And [Fournisseur] = [pro_sa]"
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With

'Fermeture du document Word
docWord.Close False
appWord.Quit

Application.ScreenUpdating = True
End Sub



Entre Excel VBA et SQL je trouve pas et ca fait trop d'un coup :-(
Lino


Avatar
linostarr

bonjour Lino,

à la page 4, il est mentionner de ne pas mettre d'espace :

Lorsque vous créez le nom des champs, respectez les conseils suivants:
Nom le plus court possible
Pas d'espace
Pas d'accent
Pas de caractères spéciaux

isabelle



Bonjour Isabelle,

J'ai changé le nom de la feuille "Carnet de Commande" par "Commandes"
Mais quand je fait la requête suivante toujours rien.

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Commandes$] WHERE [Fournisseur] =
[sarl]"


Lino
septique sur la syntaxe []
manque pas un ' ou " ou un &
--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.
(Coluche, Michel Colucci - 1944 à 1986)

Avatar
linostarr

bonjour Lino,

à la page 4, il est mentionner de ne pas mettre d'espace :

Lorsque vous créez le nom des champs, respectez les conseils suivants:
Nom le plus court possible
Pas d'espace
Pas d'accent
Pas de caractères spéciaux

isabelle


Bonjour,

Je suis newbie dans le monde de excel, disons que je bidouille,
j'ai trouvé sur le web un exemple de code
(ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf)
pour automatiser la génération d'un bon de commande via le
publipostage excel vers word.
J'ai donc crée une feuille excel nommé : "Carnet de Commande"
qui contient plusieurs colonne :
"Etats de la Commande" qui contient des états, ex : "Cmd à Passer"
"Fournisseur" qui contient des fournisseur, ex : "pro_sa"
....

Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Carnet de Commande$] WHERE [Etats de la Commande] =
[Cmd à Passer] And [Fournisseur] = [pro_sa]"

voici l'exemple du web que j'ai associé à un bouton :

Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application

Application.ScreenUpdating = False

Set appWord = New Word.Application
appWord.Visible = False

'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:Commande.doc")

'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille

'ICI CA MERDOUM !!!

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Carnet de Commande$] WHERE [Etats
de la Commande] = [Cmd à Passer] And [Fournisseur] = [pro_sa]"
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With

'Fermeture du document Word
docWord.Close False
appWord.Quit

Application.ScreenUpdating = True
End Sub



Entre Excel VBA et SQL je trouve pas et ca fait trop d'un coup :-(
Lino



Pour info j'ai trouver une solution :
(la base etait pas ouverte ... et ca marche avec des espace ;-) )

Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application

Dim Chemin As String
Dim NomFich As String
Dim NomBase As String

Chemin = "C:Documents and SettingsuserBureautest"
NomFich = "fusion.doc"
NomBase = "base.xls"

'ouvre une session Word
Set appWord = CreateObject("word.application")
appWord.Visible = True
Set docWord = appWord.Documents.Open(Filename:=Chemin & NomFich)
DoEvents

'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
With docWord.MailMerge
'La base Excel est dans le même répertoire que le doc Word.
.OpenDataSource Name:=Chemin & NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Chemin & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [Commandes$] WHERE [Etats de
la Commande] = ""Cmd à Passer"" And [Fournisseur] = ""JoeBarTeam"""


'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter

With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
End With
Fermeture du document Word
docWord.Close False
appWord.Quit

Application.ScreenUpdating = True
End Sub


A+

--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Finalement, mieux vaut se battre qu'avoir peur.
(Gandhi, Mohandas Karamchand, nommé le Mahatma - 1869 à 1948)