Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3051 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Probleme de publipostage(Resolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de publipostage(Resolu)

n°1280087
lden
Posté le 10-01-2006 à 08:25:01  profilanswer
 

Bonjour,
 
Jsuis en galere sous word. :cry:  
En gros j'essaie de faire un publipostage d'une base sous excel via word.
cette base contient une colonne de donnée nommée Mois.
J'ai enregistré la macro de publipostage et y ai rajouté du code qui va extraire de cette base que les données correspondant au mois actuel.J'ai un erreur du type:
 
Impossible d'analyser la syntaxe des options de requete dans un chaine SQL;
Voila la macro suivante je suis conscient que c'est dans la ligne de requete sur le terme st que va le probleme mais je sais vraiment pas comment le regler.
 
Voila je vous laisse le code et merci les gars!
 
Sub e_c_a()
'
' e_c_a Macro
' Macro enregistrée le 06/01/2006 par DENISE Louis
'
Const separateur As String = "/"
Dim mois As String
Dim st As String
Dim i As Integer
Dim MyDate
MyDate = Date
 
i = 0
iret2 = Split(MyDate, separateur, -1, vbTextCompare)
mois = CStr(iret2(1))         'donne le mois actuel
'MsgBox (mois)
 
ActiveDocument.MailMerge.DataSource.QueryString = _
"SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A')) AND (Mois = mois))" _
& ""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
End Sub
 
 
Merci les gars!


Message édité par lden le 10-01-2006 à 16:36:44
mood
Publicité
Posté le 10-01-2006 à 08:25:01  profilanswer
 

n°1280171
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 10:38:34  profilanswer
 

Je pense que c'est la construction de ta requête. Elle doit être comme cela :
 

Code :
  1. "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A')) AND (Mois = " & mois & " ))"


 
Sinon, VBA ne met pas la valeur de mois dans la requête. A voir si cela marche...


Message édité par Manu la Science le 10-01-2006 à 10:39:12

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280181
lden
Posté le 10-01-2006 à 10:54:18  profilanswer
 

oufff
 
ton truc a l'air de presq eu marcher car la valeur de mois est bien visible dans la requete en mode debug. Par contre j'ai laissé apres le dernier guillement de la requete le: _ &""
 
Voila donc ma requete avec choix:
ActiveDocument.MailMerge.DataSource.QueryString = _
        "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls _ WHERE ((Type = 'A')) AND (Mois = " & mois & " ))" _
         & ""
 
Je pense que tu tiens le bon bout ya quremant une petite chose à changer.
merci a tout de suite!!
 
 

n°1280183
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 10:57:20  profilanswer
 

Le _&"" ne sert à rien... Il devait y avoir plutôt _&";"
 
Je pense que c'est le ; qui manque... A essayer
 
Sinon, quelle est l'erreur donné par VBA ?


Message édité par Manu la Science le 10-01-2006 à 10:57:52

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280186
lden
Posté le 10-01-2006 à 11:01:54  profilanswer
 

l'erreur est la suivante:
 
erreur '5638'
Impossible d'analyser la syntaxe des options de requete dans un chaine SQL valide.
c'est tj la meme erreur .  
merci pr ton aide

n°1280191
lden
Posté le 10-01-2006 à 11:09:10  profilanswer
 

la variable mois je l'ai defini en string, je me demande si c'est correct pr ce genre de requet SQL???

n°1280194
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 11:12:32  profilanswer
 

Que stocke la variable mois ? un mot ou un nombre ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280200
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 11:16:24  profilanswer
 

Peux-tu remettre le code de ta fonction car j'ai cru voir un "_" juste avant le WHERE... et après le nom du fichier...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280213
lden
Posté le 10-01-2006 à 11:23:39  profilanswer
 

elle stocke un mot, defini en string; elle stocke le mois ou je fais appelle a la macro:
exemple si ty es en fevrier elle stocke 02 ; puis je vais faire l'analogie avec un tableau dans une boucle comme suit:
ce qui dans la base de donnée me laisse libre d'ecrire les mois par leur nom et non par 01 ou 06 ...
voila le code:
 
MyMonth_num = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" )
MyMonth_letter = Array("Janvier", "Fevrier", "Mars", "Avril", "mai", "Juin", "juillet", "Aout", "Septembre", "Octobre", "Novenbre", "Decembre" )
 
Const separateur As String = "/"
Dim mois As String
Dim st As String
Dim i As Integer
Dim MyDate
MyDate = Date
 
i = 0
iret2 = Split(MyDate, separateur, -1, vbTextCompare)
mois = iret2(1)
Do
i = i + 1
Loop Until (MyMonth_num(i - 1) = mois)
st = MyMonth_letter(i - 1)
 
et j'insere st dans la requete comme tu m'as dis de faire la st ce une string!
 
tj la meme erreur j'espere que c'est possible..
merci

n°1280215
lden
Posté le 10-01-2006 à 11:24:45  profilanswer
 

et apres le st= Month_letter..
 
ActiveDocument.MailMerge.DataSource.QueryString = _
        "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A')) AND (Mois = " & st & " ))" _
        & ""
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With
End Sub

mood
Publicité
Posté le 10-01-2006 à 11:24:45  profilanswer
 

n°1280216
lden
Posté le 10-01-2006 à 11:26:05  profilanswer
 

le _ est bien compris dans le nom de mon dossier.
si j'enleve l'histoire du mois ca marche..

n°1280224
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 11:38:12  profilanswer
 

Et en mettant :

Code :
  1. "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A')) AND (Mois = '" & st & "'))" _
  2.         & ""


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280296
lden
Posté le 10-01-2006 à 12:25:00  profilanswer
 

toujours la meme erreur, VB est cruel avec nous la!!!
le pire c'est que qd je veux de l'aide sur l'erreur il me sort l'aide toute grisée....
 

n°1280320
lden
Posté le 10-01-2006 à 12:42:22  profilanswer
 

deja grosse news manu si je fais un publipostage manuellemtn il gere que les nombre car j'ai essaye en mettant decembre par expl dans la colonne et il comprend pas. donc on va pas se casser la tete avec l'histoire des tableaux : le code devient donc:
 
 Const separateur As String = "/"  
Dim mois As Integer  
Dim i As Integer  
Dim MyDate  
MyDate = Date  
   
i = 0  
iret2 = Split(MyDate, separateur, -1, vbTextCompare)  
mois = iret2(1)   'je sais pas si ca sera pris en compte car iret2(1) est un string, comment le convertir en entier   avec le 0
 
ActiveDocument.MailMerge.DataSource.QueryString = _  
        "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A')) AND (Mois = " & mois & " ))" _  
        & ""  
    With ActiveDocument.MailMerge  
        .Destination = wdSendToNewDocument  
        .MailAsAttachment = False  
        .MailAddressFieldName = ""  
        .MailSubject = ""  
        .SuppressBlankLines = True  
        With .DataSource  
            .FirstRecord = wdDefaultFirstRecord  
            .LastRecord = wdDefaultLastRecord  
        End With  
        .Execute Pause:=True  
    End With  
End Sub


Message édité par lden le 10-01-2006 à 12:45:26
n°1280329
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 12:49:39  profilanswer
 

Tu n'as pas modifié la requête... j'ai mis des '
 
Il faut mettre '" & mois & "' au lieu de " & mois & "
 
Je pense que cela devrait marcher après...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280334
lden
Posté le 10-01-2006 à 12:55:20  profilanswer
 

si si j'ai deja fait mais ca a marque la meme erreur...

n°1280385
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 13:48:38  profilanswer
 

On va essayer un truc... Ne définis pas la variable mois et demande quel type de variable c'est avec le code :
 
VarType(mois)
msgbox(mois)
 
juste après avoir mis la valeur dans mois...
 


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280405
lden
Posté le 10-01-2006 à 14:03:41  profilanswer
 

ok


Message édité par lden le 10-01-2006 à 14:05:02
n°1280410
lden
Posté le 10-01-2006 à 14:08:40  profilanswer
 

ca fait rien vartype  
mois=iret2(1)      'iret2(1) est l'element premier du tableau compose de schaine de caratere de la date : pr le 01/01/2006 c'est 01
VarType(mois)    'vartype ne marque rien  
MsgBox(mois)     ' affiche 01

n°1280413
lden
Posté le 10-01-2006 à 14:12:17  profilanswer
 

ce plutot
iret= VarType(mois)
MsgBox(iret)
 
ce qui donne une chaine mais ce normal puisque SPLIT renvoie des chaines.la requete SQL n'accepte donc pas les chaine...
 
j'ai l'impression que la requete ne reagrde pas dans la variable qu'elle regarde juste je sais pas comment on peut dire ca son "enveloppe"!
en fait le mois cache une chaine("01" ou "02"...), la requete ne voit que  mois


Message édité par lden le 10-01-2006 à 14:16:35
n°1280495
lden
Posté le 10-01-2006 à 15:13:30  profilanswer
 

put.. j'ai trouve!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
truc de ouf
voila le code, on a bien bossé!! merci
 
Private Sub e_c_a()
'
' e_c_a Macro
' Macro enregistrée le 06/01/2006 par DENISE Louis
'
MyMonth_num = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" )
MyMonth_letter = Array("Janvier", "Fevrier", "Mars", "Avril", "mai", "Juin", "juillet", "Aout", "Septembre", "Octobre", "Novenbre", "Decembre" )
 
Const separateur As String = "/"
Const appos As String = "'"
Dim i As Integer
Dim MyDate
MyDate = Date
 
i = 0
iret2 = Split(MyDate, separateur, -1, vbTextCompare)
mois = CInt(iret2(1))
 
Do
i = i + 1
Loop Until (CInt(MyMonth_num(i - 1)) = mois)
st = CByte(MyMonth_num(i - 1))
X = "(Mois = " & appos & st & appos & " )"
ActiveDocument.MailMerge.DataSource.QueryString = _
        "SELECT * FROM E:\comptabilité matiière\liste_MASTER.xls WHERE ((Type = 'A') AND " & X & " )" _
        & ""
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With
End Sub
 
 
merci Manu @++
 
 

n°1280592
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 16:29:10  profilanswer
 

Il manquait bien les cotes, c'est ca... Mais il ne les prenait pas en les notant '...
 
Bravo à toi... Comme tu dis, truc de ouf...
 
Marque dans ton titre que le sujet est résolu...
 
@++


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1280598
lden
Posté le 10-01-2006 à 16:32:24  profilanswer
 

comment je fais

n°1280603
Manu la Sc​ience
...la science ... pas toujours
Posté le 10-01-2006 à 16:34:24  profilanswer
 

Tu édites ton premier post et tu mets dans le titre [Résolu]...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Probleme de publipostage(Resolu)

 

Sujets relatifs
Problème de couleur avec un JTabbedPane[RESOLU][SH - SED] Fonctionnement très bizarre
Problème de connexion avec l'utilisateur ASPNET???[Résolu] Casse dans une requête sql
probléme avec create_element qui retourne NULL[resolu] pb créer graphique
[Résolu] time() rechercher SQL antérieure[Perl] Probleme avec Fork
[PHP] Problème de connection à la base de données[Résolu] Lien sur une image
Plus de sujets relatifs à : Probleme de publipostage(Resolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR