Statut : Non résoluRequête SQL par VBA EXCEL : ça marche pas!!!
Soobook, le vendredi 26 août 2005 à 10:51:54 Bonjour,
j'ai mis en place des états d'avancement automatisés, développés en VBA sous Excel. Ils sont alimentés en données via une requête SQL. Tout cela fonctionne très bien et je suis en train de faire un classeur capable de générer automatiquement ces états d'avancement en copiant un dossier éxistant, puis en générant la requête SQL appropriée et en l'y insérant. J'ai enfin réussi à écrire un script qui ne plante pas, mais même si elle semble fonctionner, les données ne sont pas insérées dans le nouveau dossier. Voici le script que j'ai écris, si quelqun voit où est le problème, merci de m'expliquer (ça me désespère!!!). Par une userform, l'utilisateur saisit un répertoire où sera généré le dossier et un code collection (H04 pour Hivers 2004, E06 pour Eté 2006, ...) :
Merci de ne pas joindre de pièce à votre réponse : je ne peux pas les télécharger au boulot (sniff!!!).
Dim COL As String
Dim NOM_SOURCES As String
Dim NOM_SORTIE As String
Dim REP As String
Dim REP_DEF As String
Dim SOURCES As String
Dim SORTIE As String
''''Définition des noms des fichiers et des répertoires
REP_DEF = "P:\Informatique\WebPDM\Intranet\Donnees\"
REP = TB_rep.Text ''''Saisi par l'utilisateur
COL = TB_col.Text ''''Saisi par l'utilisateur
Range("A1") = REP_DEF
Range("A2") = REP
Range("A3") = COL
Range("A4") = ".xls"
Range("A5") = "R_Planning_"
Range("A6") = "Avancement_Prod_"
Range("A8") = "=R[-3]C&R[-5]C"
Range("A9") = "=R[-3]C&R[-6]C"
Range("A10") = "=R[-2]C&R[-6]C"
Range("A11") = "=R[-2]C&R[-7]C"
Range("A12") = "=R[-11]C&R[-2]C"
Range("A13") = "=R[-11]C&R[-2]C"
NOM_SOURCES = Range("A10")
NOM_SORTIE = Range("A11")
SOURCES = Range("A12")
SORTIE = Range("A13")
''''Copie du fichier source
FileCopy "P:\Informatique\WebPDM\Intranet\Donnees\Avancement_Prod_Source.xls", SORTIE
''''Mise en place de la requête SQL
Dim TABLES As String
Dim BDD As String
Dim F_BDD As String
F_BDD = Range("A8")
BDD = "SELECT " & F_BDD & ".`Univ`, " & F_BDD & ".`Thème`, " & F_BDD & ".`Date d'implantation`, " & F_BDD & ".`Date Ok shipment souhaitée`, " & F_BDD & ".`Ok shipment sample USA`, " & F_BDD & ".`Ok shipment sample`, " & F_BDD & ".`Ok production`, " & F_BDD & ".`Ok composants style`, " & F_BDD & ".`Ok size set`, " & F_BDD & ".`Ok proto`, " & F_BDD & ".`Ok dossier technique`, " & F_BDD & ".Modèle"
TABLES = "FROM `P:\Informatique\WebPDM\Intranet\Donnees\" & F_BDD & "`." & F_BDD & " " & F_BDD
Workbooks.Open SORTIE
Windows(NOM_SORTIE).Activate
Sheets("BdD").Activate
With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=Excel Files;DBQ=P:\Informatique\WebPDM\Intranet\Donnees\" & F_BDD & ".xls;DefaultDir=P:\Informatique\WebPDM\Intranet\Donnees;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"), Destination:=Range("D1"))
.CommandText = BDD & " " & TABLES
.Name = "Lancer la requête à partir de Excel Files"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With
End Sub
Cordialement,
Soobook.