SELECT sur une fueille excel pour du publipostage

Le
linostarr
Bonjour,

Suite à l'utilisation d'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é : "Commandes"
qui contient plusieurs colonne, don :
"Frais" qui contient les frais de port.
.

Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Commandes$] WHERE [Frais] >50"

Le Message d'erreur est : docWord.MailMerge.DataSource.Query=<L'objet
demandé n'est pas disponible>


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:BonCommande.doc")

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

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Commandes$] WHERE [Frais] > 50"
'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

Lino
qui ne sait pas quelle syntaxe utiliser pour le SELECT.

--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Quand une fois la liberté a explosé dans une âme d'homme,
les dieux ne peuvent plus rien contre cet homme-là.
(Jean-Paul Sartre / 1905-1980 / Les mouches)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
linostarr
Le #4907531

Bonjour,

Suite à l'utilisation d'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é : "Commandes"
qui contient plusieurs colonne, don :
"Frais" qui contient les frais de port.
....

Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Commandes$] WHERE [Frais] >50"

Le Message d'erreur est : docWord.MailMerge.DataSource.Query...=<L'objet
demandé n'est pas disponible>


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:BonCommande.doc")

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

docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Commandes$] WHERE [Frais] > 50"
'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

Lino
qui ne sait pas quelle syntaxe utiliser pour le SELECT.




Pour info j'ai trouver une solution :
(la base etait pas ouverte ...)

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)

Publicité
Poster une réponse
Anonyme