activation automatique commande SQL dans Excel

demarcj

XLDnaute Nouveau
Bonjour,

Je ne sais pas s'il s'agit d'un problème SQL ou plutot VB (je me suis donc permis de poser ma question sur les 2 forums.

Voici moi problème...

Toutes les manipulations ont été simplifiés car ces programmes sont utilisés par du personnel "maladroit"...

J'ai créé une base de donnée (avec formulaire d'encodage) dans Excel... un fois les informations encodées... on utilise un fichier Word pour faire du publipostage... et dans ce fichier pour facilité la tache de tous le monde... à l'ouverture il réalise directement le publipostage... ouvre un fichier lettre1 comprennant les unes en dessous des autres toutes lees fiches complétées (en fonction du tableau Excel)... et ferme automatique le fichier de départ pour éviter toutes manipulations dévastatrices...
Jusque là tout est bon... mais pour ne garder que les fiches en cours... j'ai modifié la liste des destinataires pour y inclure la consigne de ne conserver que certaine donnée et de les classées par ordre alphabétique...
et à l'ouverture... il m'ouvre une fenètre pour demandé si on veut "exécuter la commande SQL suivante: ... et il demande de cliquer sur "OUI"... dès que l'on clique sur OUI il lance le publipostage... ouvre lettre1 et ferme le fchier de départ...
Mais si par erreur quelqu'un clique sur NON... il pert le lien avec le fichier Excel... et ça ne fonctionne plus...
J'aurai donc aimé rajouter à ma macro de publipostage automatique... la fonction de cliquer sur "OUI" lors de l'excécution de la commade SQL... ou bien de demander un activation automatique de ces commandes pour ce fichier...

voici la macro que j'utilise actuellement...

Private Sub document_Open()
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 0
Windows("mic présentation.doc").Activate
ActiveDocument.Save
ActiveWindow.Close
End Sub

Jérôme

Un tout grand merci d'avance
 

Modeste

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

Bonjour demarcj,

En attendant les "aficionados" de vba, une solution pourrait être d'enregistrer ton document Word comme modèle (*.dot) ... Ceci éviterait toute manipulation malencontreuse sur le fichier original

Modeste
 

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

je ne connais pas du tout le point .dot ça change quoi...

parceque le soucis n'est pas que les gens modifie le fichier Word ... je l'ai protégé... mais surtout que lorsqu'il clique sur NON il supprime le lien entre le fichier word et Excel...
 

Modeste

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

rebonjour demarcj,

l'intérêt des modèles est que tu n'ouvres jamais qu'une copie de l'original et donc, même si un distrait répond "non" au message qui propose d'exécuter la commande SQL, cette erreur n'a de répercussion que sur l'exemplaire affiché à l'écran, mais ne modifie en rien le modèle, ni la liaison entre les deux fichiers Word et Excel.

Modeste
 

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

c'est peut être une solution cependant... ma macro de publipostage automatique ne fonctionne plus...


Private Sub document_Open()
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 0
Windows("mic présentation.doc").Activate
ActiveDocument.Save
ActiveWindow.Close
End Sub
 

Catrice

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

Bonjour,

Tu peux essayer quelque chose comme ceci :

Sub Test1()
Application.DisplayAlerts = False
Documents.Open FileName:="Test.doc"
Application.DisplayAlerts = True
With ActiveDocument.MailMerge
.OpenDataSource Name:="C:\MonChemin\base.xls", Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\MonChemin\base.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";", SQLStatement:="SELECT * FROM `Feuil1$`"
.ViewMailMergeFieldCodes = wdToggle
End With
End Sub
 

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

sorry je suis vraiment trop débutant pour tout suivre...

le fichier word s'appele MIC Présentation.doc
le fichier Excel G:\Sylvie\MIC OK\MIC encodage.xls
il n'y a aucun mot de passe...
la commande SQL : SELECT*FORM`MIC$`WHERE`en cours`='oui'ORDRE`Chambre`ASC

Je ne sais pas s'il faut des espace ou pas ` après ou avant ce signe...


Sorry de mon incompétence...

Jérôme
 

Modeste

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

rebonjour demarcj, Catrice,

Ah quand les macrobranchés s'y mettent ... ! :eek:
Pour demarcj, pour savoir s'il faut des espaces et autres caractères, il faut utiliser la même syntaxe que dans le message à l'ouverture de ton document Word: la commande SQL à exécuter devrait être celle qui s'affiche (voir pièce jointe). Des espaces manquent peut-être; les accents et apostrophes ont l'air corrects.
Par contre vérifier qu'il s'agit de "FROM" et non "FORM" et "ORDER" plutôt que "ORDRE"

Modeste
 
Dernière édition:

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

pouir en revenir à mon problème de départ c'est excatement le message mis en pièce jointe par modeste que j'aimerai contourner (cliquer "OUI" automatiquement à l'Ouverture)

HELP HELP HELP...

encore ce matin un petit malin à cliquer NON et il a fallu refaire le lien... car plus rien ne fonctionnait
 

Catrice

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

Re,

La Macro proposée evite le message, chez moi en tous cas ...
Pour obtenir la ligne de commande idoine :
- Ouvre ton fichier Word
- Aller dans Outils/Macro/Nouvelle Macro
- Aller dans Outils/Publipostage
- à l'étape 3 (ou equivalente) changer la source (re-choisir la meme)
- OK
- Arreter l'enregistreur.

Dans la macro tu auras la chaine du Select à remplacer dans le code que j'ai fourni precedement.
 

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

voila ça marche "presque"... quand je mets la fonction... SELECT*FROM`MIC$`... c'est OK

Quand je rajoute la fin de la commande SQL...

WHERE` en cours` ='Oui' ORDER BY `Salle` ASC, `Chambre` ASC

ça bloque et il me demande de "sélectionner table" puis il me dit "le champ de fusion est non valide"...

avez vous une idée... est ce que mon Where... est correct...
 

Modeste

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

Et re,

Pas certain d'avoir trouvé la bonne combine, mais, même en utilisant l'enregistreur de macro, les "suppléments" de la requête SQL (WHERE, ORDER, ... ) ne sont pas repris dans le SQLStatement.
Par contre, en fouillant dans la documentation, il semble qu'on puisse ajouter au code proposé par Catrice, une ligne qui ressemblerait à ce qui suit:
ActiveDocument.MailMerge.DataSource.QueryString = "SELECT * FROM `Clients` WHERE `CP` >6500 ORDER BY `NOM` ASC"
... qui a l'air de fonctionner en XL2003 ... mais a adapter (noms des champs)

Modeste
 

demarcj

XLDnaute Nouveau
Re : activation automatique commande SQL dans Excel

sorry mais je place ça où dans la macro...

Private Sub document_Open()
ActiveDocument.MailMerge.OpenDataSource Name:= _
"E:\SYLVIE\MIC OK\MIC Encodage.xls", ConfirmConversions:=False, ReadOnly _
:=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
"", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin; _
Data Source=E:\SYLVIE\MIC OK\MIC Encodage.xls;Mode=Read;Extended Properties=""HDR=YES; _
IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""""; _
Jet OLEDB:Database Password="""";Jet OLEDB:Engin" _
, SQLStatement:="SELECT * FROM `MIC$` WHERE `en cours` ='Oui' ORDER BY `Salle` ASC, `Chambre` ASC", _
SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 0
Windows("mic présentation.doc").Activate
ActiveDocument.Save
ActiveWindow.Close
End Sub
 

Modeste

XLDnaute Barbatruc
Re : activation automatique commande SQL dans Excel

Re-re, etc.

Encore une fois, je ne suis pas spécialiste de vba, mais il me semble que j'insérerais la ligne dans ton code, comme ci-dessous:

With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
.QueryString = "SELECT * FROM `Clients` WHERE etc ..."
End With
.Execute Pause:=False
End With

reste à voir si les 2 lignes ".FirstRecord ..." et ".LastRecord ..." doivent rester ou être remplacées par le ".QueryString ..."

Désolé, mais je ne peux qu'émettre des hypothèses.

Modeste
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 842
Membres
103 003
dernier inscrit
Maxmarie14