OVH Cloud OVH Cloud

messagepour anacoluthe si il veut bien se donner la peine de le lire :)

1 réponse
Avatar
guimou
salut, je te copie ci dessous la réponse que tu m'avais faite le 18/12
dernier

Bonjour !

'NOSPAMPLEASE' nous a écrit ...
>> - je voudrais également que le fichier de données (texte séparé par
>> des ;)soit trié sur un ou deux champs avant la fusion
> Personne n'aurait un début de réponse ?

Alors juste un tout petit petit début... :-) ))))))))))

Word ne peut pas trier physiquement votre source, encore que
s'agissant
d'une source texte délimité, l'ouvrir et la trier comme un tableau
soit
possible; Word peut par contre traiter les enregistrements de façon
triée à la fusion : vous devez le spécifier dans votre requête SQL
SQLStatement de votre OpenDataSource... L'enregistreur vba ne va pas
jusqu'à enregistrer vos requêtes SQL dans l'assistant requête !

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


Donc, j'ai cherché, j'ai écrit ça 'après plusieurs heures de
recherches qd même ;)

Private Sub Document_Open()
Dim doc As String

On Error Resume Next
With ActiveDocument.MailMerge
.OpenDataSource Name:="\\Lana200a\U0_eicm\Icm_lm\MKT1_sor\0aaretar.001"
.SQLStatement:="SELECT * FROM `0aaretar.001`" & "ORDER BY idpos"
.Destination = wdSendToNewDocument
.Execute
End With
End Sub

et là, j'ai un message d'erreur : erreur de compilation : erreur de
syntaxe sur la ligne SQLstatement ...

je ne connais du tout la syntaxe.. j'ai essayé de mettre une virgule à
la fin de cette ligne mais j'ai alors une erreur de compilation:
expression attendu sur ":=" qui est juste après SQLstatement...

je tourne en rond, un petit coup de main ne serait pas de trop.

Pendant que j'y suis... le document sur lequel je travaille a le même
nom que la source de donnée que j'utilise (ici OAARETAR.DOC ET
OAARETAR.001). Puis je utiliser le nom du document word pour indiquer
la source de données ? Ex : ..\nomdudocumentencours.001"

merci de votre aide

1 réponse

Avatar
Anacoluthe
Bonjour !

'Guimou' nous a écrit ...
Donc, j'ai cherché, j'ai écrit ça 'après plusieurs heures de
recherches qd même ;)
Private Sub Document_Open()
Dim doc As String
On Error Resume Next
With ActiveDocument.MailMerge
.OpenDataSource Name:="Lana200aU0_eicmIcm_lmMKT1_soraaretar.001"
.SQLStatement:="SELECT * FROM `0aaretar.001`" & "ORDER BY idpos"
.Destination = wdSendToNewDocument
.Execute
End With
End Sub
et là, j'ai un message d'erreur : erreur de compilation : erreur de
syntaxe sur la ligne SQLstatement ...


Oui oui je me donne parfois la peine de lire :-D ))))
Encore que je vais à nouveau être absent quelques jours ...
Mais évitons les discussions persos : il y a bien d'autres
contributeurs/trices sur ce forum qui peuvent vous répondre !

SQLStatement n'est pas une propriété de MailMerge comme vous l'écrivez
mais un /argument/ de la méthode OpenDataSource
MonDoc.Mailmerge.OpenDataSource Name:=... , SQLStatement:=...
Vérifiez aussi les espaces dans votre chaîne de requête.

Un conseil : n'écrivez jamais 'On Error Resume Next' tant que votre
code n'est pas débogué : comment voulez-vous repérer vos erreurs
si vous les sautez ? :-p

Bonne continuation

Anacoluthe
« J'ai pris un cours de lecture rapide et j'ai pu lire
"Guerre et Paix" en vingt minutes. Ça parle de la Russie. »
- Woody ALLEN