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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
à 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
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)
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)
à 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)
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
'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)
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
'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)
à 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
'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)