Bonjour à toutes et tous,
Je suis en train d'essayer d'intégrer une requête SQL dans VBA Excel afin d'afficher ma table dans une feuille avant d'en extraire les données.
Afin d'identifier le code avant retouches, j'ai essayé de passer par l'enregistreur de macro comme me l'a suggéré mon frère.
Mon problème est le suivant, pendant l'enregistrement j'ai le message d'erreur : "Trop de caractères de continuité de ligne." et l'enregistreur s'interrompt à ce moment là.
J'ai trouvé sur un message quelques pistes, j'ai tenté de faire des essais, en vain, je créé donc un nouveau sujet espérant que vous puissiez m'aider.
Le début de code proposé par Excel avant erreur est comme ceci :
L'ensemble de la requête que je souhaiterais intégrer est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "OLEDB;DSN=XXXXXXXX;UID=YYYYYYYY;;APP=Microsoft Office 2003;WSID=GFPCORDIRPO01;DATABASE=ZZZZZZZZ;" _ , Destination:=Range("$B$1")).QueryTable .CommandType = xlCmdSql .CommandText = Array( _ "SELECT ALID01.INV_FILE, ALID01.INV_NUM, ALID01.CUST_REF, ALID01.ORDERSOU, ALID01.CREAC_DATE, ALID01.MARK_CODE, ALID" _ , _ "01.CUSTP_CODE, ALID02.ACC_CODE, ALID01.SP_CODE, ALID01.TTC_AMOUNT, ALID03.PAY_AMOUNT, ALID01.AMOUNT_SIGN, ALID01.DA" _ , _ "TE_DUE,(ALID02.AUT_OVERD+ALID02.AUT_SFAC), ALID02.CUST_PHONE, ALID02.CUST_FAX, ALID02.SIREN_CODE, ALID01.REL1_DATE," _ , _ " ALID01.REL2_DATE, ALID01.REL3_DATE, ALID01.BRANC_CODE, ALID01.CUST_CODE, ALID01.ESRC_FILE, ALID01.RC_NUM, ALID08.N" _ , _ "BPAY_DAY, ALID18.SIT_NAME, ALID09.SP_CODE, ALID09.SP_NAME, ALID01.OFF_FILE, ALID01.OFF_NUM, ALID02.ACCOL_CODE, ALID" _ , _ "02.INV_NAME,(SELECT COUNT(ALID19.PAY_NUM)"&chr(13)&""&chr(10)&"FROM PROALPES..PAYDETUNPAID ALID19"&chr(13)&""&chr(10)&"WHERE ALID19.INV_FILE=ALID01.INV_FIL" _ , _ "E AND ALID19.INV_NUM=ALID01.INV_NUM)"&chr(13)&""&chr(10)&"FROM PROALPES..INREFER ALID01"&chr(13)&""&chr(10)&"INNER JOIN PROALPES..CUSTOMER ALID02 ON (ALID" _ , _ "02.CUST_CODE=ALID01.CUSTP_CODE)"&chr(13)&""&chr(10)&"INNER JOIN PROALPES..INVPAY ALID03 ON (ALID03.INV_FILE=ALID01.INV_FILE AND ALID03." _ , _ "INV_NUM=ALID01.INV_NUM)"&chr(13)&""&chr(10)&"INNER JOIN PROALPES..CUSTTYPE ALID07 ON (ALID07.CUSTY_CODE=ALID02.CUSTY_CODE)"&chr(13)&""&chr(10)&"INNER JOIN " _ , _ "PROALPES..PAYMENT ALID08 ON (ALID08.PAY_CODE=ALID01.PAY_CODE)"&chr(13)&""&chr(10)&"INNER JOIN PROALPES..SALESMEN ALID09 ON (ALID09.SP_C" _ , _ "ODE=ALID01.SP_CODE)"&chr(13)&""&chr(10)&"LEFT OUTER JOIN PROALPES..CUSTOMDB ALID12 ON (ALID12.CUST_CODE=ALID01.CUSTP_CODE AND ALID12.B" _ , _ "RANC_CODE=ALID01.BRANC_CODE)"&chr(13)&""&chr(10)&"LEFT OUTER JOIN PROALPES..CUSTTYPE ALID17 ON (ALID17.CUSTY_CODE=ALID12.CUSTY_CODE)"&chr(13)&""&chr(10)&"L" _
Mon soucis étant à priori (si les formules d'introductions sont correctes) un problème de concaténation que je n'arrive pas à faire sans que Excel me mette tout en rouge.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT ALID01.INV_FILE, ALID01.INV_NUM, ALID01.CUST_REF, ALID01.ORDERSOU, ALID01.CREAC_DATE, ALID01.MARK_CODE, ALID01.CUSTP_CODE, ALID02.ACC_CODE, ALID01.SP_CODE, ALID01.TTC_AMOUNT, ALID03.PAY_AMOUNT, ALID01.AMOUNT_SIGN, ALID01.DATE_DUE,(ALID02.AUT_OVERD+ALID02.AUT_SFAC), ALID02.CUST_PHONE, ALID02.CUST_FAX, ALID02.SIREN_CODE, ALID01.REL1_DATE, ALID01.REL2_DATE, ALID01.REL3_DATE, ALID01.BRANC_CODE, ALID01.CUST_CODE, ALID01.ESRC_FILE, ALID01.RC_NUM, ALID08.NBPAY_DAY, ALID18.SIT_NAME, ALID09.SP_CODE, ALID09.SP_NAME, ALID01.OFF_FILE, ALID01.OFF_NUM, ALID02.ACCOL_CODE, ALID02.INV_NAME,(SELECT COUNT(ALID19.PAY_NUM) FROM PROALPES..PAYDETUNPAID ALID19 WHERE ALID19.INV_FILE=ALID01.INV_FILE AND ALID19.INV_NUM=ALID01.INV_NUM) FROM PROALPES..INREFER ALID01 INNER JOIN PROALPES..CUSTOMER ALID02 ON (ALID02.CUST_CODE=ALID01.CUSTP_CODE) INNER JOIN PROALPES..INVPAY ALID03 ON (ALID03.INV_FILE=ALID01.INV_FILE AND ALID03.INV_NUM=ALID01.INV_NUM) INNER JOIN PROALPES..CUSTTYPE ALID07 ON (ALID07.CUSTY_CODE=ALID02.CUSTY_CODE) INNER JOIN PROALPES..PAYMENT ALID08 ON (ALID08.PAY_CODE=ALID01.PAY_CODE) INNER JOIN PROALPES..SALESMEN ALID09 ON (ALID09.SP_CODE=ALID01.SP_CODE) LEFT OUTER JOIN PROALPES..CUSTOMDB ALID12 ON (ALID12.CUST_CODE=ALID01.CUSTP_CODE AND ALID12.BRANC_CODE=ALID01.BRANC_CODE) LEFT OUTER JOIN PROALPES..CUSTTYPE ALID17 ON (ALID17.CUSTY_CODE=ALID12.CUSTY_CODE) LEFT OUTER JOIN PROALPES..CONTRACT ALID18 ON (ALID18.ESRC_FILE=ALID01.ESRC_FILE AND ALID18.RC_NUM=ALID01.RC_NUM) WHERE ALID01.DOC_STATUS<>5 AND ALID01.FLAG_CONSO=2 AND ( ALID01.FLAG_PAY=1) AND ALID01.TTC_AMOUNT<>0 AND ( ((ALID12.CUSTY_CODE IS NULL OR ALID12.CUSTY_CODE='') AND (ALID07.FACTOR_TYP<>1 OR ALID07.FACTOR_TYP IS NULL)) OR (ALID12.CUSTY_CODE IS NOT NULL AND ALID12.CUSTY_CODE<>'' AND (ALID17.FACTOR_TYP<>1 OR ALID17.FACTOR_TYP IS NULL)))
La piste que j'avais trouvé était du style :
Mais étant novice en VBA je ne sais pas comment l'intégrer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim Temp As String Temp = "v7.1.7 06.04.2006" & vbCrLf & _ " Ajout du Module 'arf'" & vbCrLf & vbCrLf & _ "v7.1.6 30.03.2006" & vbCrLf & _ " Ajout du Module 'bin'" & vbCrLf & vbCrLf Temp = Temp & "v7.1.7 06.04.2006" & vbCrLf & _ " Ajout du Module 'arf'" & vbCrLf & vbCrLf & _ "v7.1.6 30.03.2006" & vbCrLf & _ " Ajout du Module 'bin'" & vbCrLf & vbCrLf
Par avance merci pour votre aide.
Partager