[Catégorie modifiée .Net -> VBA] Requête VBA - SQL, trop de caractères de contin

Résolu
ffs69 Messages postés 13 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 11 janvier 2012 - 15 avril 2011 à 09:48
ffs69 Messages postés 13 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 11 janvier 2012 - 18 avril 2011 à 17:07
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 ici 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 :

    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" _


L'ensemble de la requête que je souhaiterais intégrer est la suivante :

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)))


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.

La piste que j'avais trouvé sur ce forum était du style :

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


Mais étant novice en VBA je ne sais pas comment l'intégrer.

Par avance merci pour votre aide, Camille.

7 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
15 avril 2011 à 12:47
Bonjour,

Déjà,
"a"&chr(13)&""&chr(10)&"b"
peut se remplacer par :
"a" & VbCrLf & "b"

Mets bien un espace avant et un autre après tes &

Ensuite, as-tu essayé de faire ta requête en une ligne ?

Mon site
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
15 avril 2011 à 12:51
Bonjour,

Ta 2ème requête a été tronqué, poste là AVEC la 3ème icône en partant de la droite.

Le nombre de caractères de continuation est limité à 24 Voir ici.

Pourquoi mets-tu 2 points pour séparer la table du champ sélectionné ?

Ex:
INNER JOIN PROALPES..CUSTOMER ALID02  ON (ALID02.CUST_CODE=ALID01.CUSTP_CODE)


Essaie de décomposer en plusieurs variables string:

strSelect = "SELECT..."
strFrom = "FROM ..."
strJoin = "INNER JOIN ..."
etc...

ce sera plus clair par la suite pour le debuggage.

Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
15 avril 2011 à 15:21
Ecris comme ça, ça ne risque pas marcher !

Ta variable strFrom tout de suite après le strSelect est annulé par une autre 2 lignes plus bas.

Idem pour la variable strJoin. Pour cette dernière, soit tu en définis plusieurs (strJoin1, strJoin2, etc..., soit tu les concatènes (ex pour le 2ème strJoin:

StrJoin = strJoin & "INNER JOIN PROALPES..INVPAY ALID03 ON (ALID03.INV_FILE=ALID01.INV_FILE AND ALID03.INV_NUM=ALID01.INV_NUM)"

au passage, je ne comprends toujours pas les 2 points dans PROALPES..INVPAY par exemple.

Pour le strFrom, inclus la 2ème dans le strWhere.

Autre chose, pour des raisons de clarté de code écris systématiquement le mot clé AS même s'il est facultatif.


Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
18 avril 2011 à 16:34
CommandText est tout simplement du String, pourquoi lui passer un tableau ?

Essaie comme ceci:

.CommandText = strSQL


Calade
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ffs69 Messages postés 13 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 11 janvier 2012
15 avril 2011 à 14:32
Tout d'abord merci pour vos réponses.

La requête suivante est extraite du traceur SQL qui me permet de consulter ma BDD et correspond à la Table qui m'intéresse.

Par contre je suis pas expert, je saurais pas trop vous dire où et comment couper, en entier ça donne cela (dans le cadre de code vous pouvez déplacer le texte pour voir sur la droite):

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)))


J'ai vu sur Internet que ça pouvait se décomposer en :
strSelect = "SELECT..."
strFrom = "FROM ..."
strJoin = "INNER JOIN ..."
etc...
Mais comme je disais je comprends pas trop comment c'est construit pour le moment.

Je viens d'essayer avec :
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;DSN=proalpes;UID=Administrateur;;APP=Microsoft Office 2003;WSID=GFPCORDIRPO01;DATABASE=PROALPES;" _
        , Destination:=Range("$B$1")).QueryTable
        .CommandType = xlCmdSql
strSelect = "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)"
strFrom = "FROM PROALPES..PAYDETUNPAID ALID19"
strWhere = "WHERE ALID19.INV_FILE=ALID01.INV_FILE AND ALID19.INV_NUM=ALID01.INV_NUM)"
strFrom = "FROM PROALPES..INREFER ALID01"
strJoin = "INNER JOIN PROALPES..CUSTOMER ALID02  ON (ALID02.CUST_CODE=ALID01.CUSTP_CODE)"
strJoin = "INNER JOIN PROALPES..INVPAY ALID03 ON (ALID03.INV_FILE=ALID01.INV_FILE AND ALID03.INV_NUM=ALID01.INV_NUM)"
strJoin = "INNER JOIN PROALPES..CUSTTYPE ALID07 ON (ALID07.CUSTY_CODE=ALID02.CUSTY_CODE)"
strJoin = "INNER JOIN PROALPES..PAYMENT ALID08 ON (ALID08.PAY_CODE=ALID01.PAY_CODE)"
strJoin = "INNER JOIN PROALPES..SALESMEN ALID09 ON (ALID09.SP_CODE=ALID01.SP_CODE)"
strJoin = "LEFT OUTER JOIN PROALPES..CUSTOMDB ALID12  ON (ALID12.CUST_CODE=ALID01.CUSTP_CODE AND ALID12.BRANC_CODE=ALID01.BRANC_CODE)"
strJoin = "LEFT OUTER JOIN PROALPES..CUSTTYPE ALID17 ON (ALID17.CUSTY_CODE=ALID12.CUSTY_CODE)"
strJoin = "LEFT OUTER JOIN PROALPES..CONTRACT ALID18 ON (ALID18.ESRC_FILE=ALID01.ESRC_FILE AND ALID18.RC_NUM=ALID01.RC_NUM)"
strWhere = "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)))"


Mais ça marche pas mieux :-(

Auriez-vous une autre piste?
0
ffs69 Messages postés 13 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 11 janvier 2012
18 avril 2011 à 16:26
Bonjour :) Et encore merci pour vos pistes :)

Ça avance mais j'ai pas encore réussi à venir à bout de ma requête

En suivant vos indications et avec l'aide de l'enregistreur de macro, je suis arrivé à quelque chose comme ceci :

Windows("xxxx.xlsm").Activate
Dim strSQL As String

Sheets("BDD1").Select

strSQL = "SELECT ALID01.INV_FILE, ALID01.INV_NUM, ALID01.CUST_REF, ALID01.ORDERSOU, ALID01.CREAC_DATE, ALID01.MARK_CODE, ALID"
strSQL = strSQL & "01.CUSTP_CODE, ALID02.ACC_CODE, ALID01.SP_CODE, ALID01.TTC_AMOUNT, ALID03.PAY_AMOUNT, ALID01.AMOUNT_SIGN, ALID01.DA"
strSQL = strSQL & "TE_DUE,(ALID02.AUT_OVERD+ALID02.AUT_SFAC), ALID02.CUST_PHONE, ALID02.CUST_FAX, ALID02.SIREN_CODE, ALID01.REL1_DATE,"
strSQL = strSQL & " ALID01.REL2_DATE, ALID01.REL3_DATE, ALID01.BRANC_CODE, ALID01.CUST_CODE, ALID01.ESRC_FILE, ALID01.RC_NUM, ALID08.N"
strSQL = strSQL & "BPAY_DAY, ALID18.SIT_NAME, ALID09.SP_CODE, ALID09.SP_NAME, ALID01.OFF_FILE, ALID01.OFF_NUM, ALID02.ACCOL_CODE, ALID"
strSQL = strSQL & "02.INV_NAME,(SELECT COUNT(ALID19.PAY_NUM)" & VbCrLf & "FROM PROALPES..PAYDETUNPAID ALID19" & VbCrLf & "WHERE ALID19.INV_FILE=ALID01.INV_FIL"
strSQL = strSQL & "E AND ALID19.INV_NUM=ALID01.INV_NUM)" & VbCrLf & "FROM PROALPES..INREFER ALID01" & VbCrLf & "INNER JOIN PROALPES..CUSTOMER ALID02  ON (ALID"
strSQL = strSQL & "02.CUST_CODE=ALID01.CUSTP_CODE)" & VbCrLf & "INNER JOIN PROALPES..INVPAY ALID03 ON (ALID03.INV_FILE=ALID01.INV_FILE AND ALID03."
strSQL = strSQL & "INV_NUM=ALID01.INV_NUM)" & VbCrLf & "INNER JOIN PROALPES..CUSTTYPE ALID07 ON (ALID07.CUSTY_CODE=ALID02.CUSTY_CODE)" & VbCrLf & "INNER JOIN "
strSQL = strSQL & "PROALPES..PAYMENT ALID08 ON (ALID08.PAY_CODE=ALID01.PAY_CODE)" & VbCrLf & "INNER JOIN PROALPES..SALESMEN ALID09 ON (ALID09.SP_C"
strSQL = strSQL & "ODE=ALID01.SP_CODE)"
strSQL = strSQL & "LEFT OUTER JOIN PROALPES..CUSTOMDB ALID12  ON (ALID12.CUST_CODE=ALID01.CUSTP_CODE AND ALID12.BRANC_CODE=ALID01.BRAN"
strSQL = strSQL & "C_CODE)" & VbCrLf & "LEFT OUTER JOIN PROALPES..CUSTTYPE ALID17 ON (ALID17.CUSTY_CODE=ALID12.CUSTY_CODE)" & VbCrLf & "LEFT OUTER JOIN PROALP"
strSQL = strSQL & "ES..CONTRACT ALID18 ON (ALID18.ESRC_FILE=ALID01.ESRC_FILE AND ALID18.RC_NUM=ALID01.RC_NUM)" & VbCrLf & "WHERE ALID01.DOC_STATUS"
strSQL = strSQL & "<>5 AND ALID01.FLAG_CONSO=2 AND  ( ALID01.FLAG_PAY=1) AND ALID01.TTC_AMOUNT<>0 AND ( ((ALID12.CUSTY_CODE IS NULL OR"
strSQL = strSQL & " ALID12.CUSTY_CODE='') AND (ALID07.FACTOR_TYP<>1 OR ALID07.FACTOR_TYP IS NULL)) OR  (ALID12.CUSTY_CODE IS NOT NULL "
strSQL = strSQL & "AND ALID12.CUSTY_CODE<>'' AND (ALID17.FACTOR_TYP<>1 OR ALID17.FACTOR_TYP IS NULL)))"

    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=MSDASQL.1;Persist Security Info=True;Extended Properties=""DSN=xxxxx;Description=xxxxx;UID=Administrateur;APP=Micr" _
        , "osoft Office 2003;WSID=xxxxx;DATABASE=xxxxx"""), Destination:= _
        Range("$C$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array(strSQL)
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = _
        "Tableau_SQL_Queries___xxxxx__x.x.x.x____9.16.2"
        .Refresh BackgroundQuery:=False
    End With

End Sub


Ça a l'air mieux, je n'ai plus le problème de trop de caractères de continuité de lignes.

En revanche j'ai maintenant une "erreur d'exécution '13': Incompatibilité de type" à la ligne ".CommandText = Array(strSQL)".

Je crois avoir trouvé des infos mais je sais pas comment adapter dans mon cas si vous pourriez m'aider encore une fois

C'que j'ai trouvé sur le net ressemble à ça :

- "I think there is a limit of 255 characters for the CommandText property."
- "Try putting the SQL string in the sql argument when you Add the QueryTable."
- "If that doesn't work try using the Sql property instead of the CommandText property. It's been replaced by the CommandText property, but still exists for backwards compatibilty. It's also a variant."

Juste je comprends pas bien où et comment je devrais le mettre si l'une ou l'un de vous pouvait m'aider à y voir plus clair ce serait une bénédiction.

Par avance merci.
0
ffs69 Messages postés 13 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 11 janvier 2012
18 avril 2011 à 17:07
yyyyyyyyyyyyyyyyééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé merci :)))
0
Rejoignez-nous