Erreur d'exécution'13' d'imcompatibilité de type.

fitzjames Messages postés 55 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 27 février 2009 - 2 oct. 2006 à 13:13
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 2 oct. 2006 à 19:04
Bonjour,

J'ai un petit souci sur ma requête excel qui fait appel à une requête access :

J’ai renommer  la base access et la requête excel ne fonctionne plus:
' Importe les données
With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=MS Access Database;DBQ=\\b561782\sav\Ma base NO-NE.mdb;DefaultDir=E:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT `NO-NE Recap PV&O`.Code_document, `NO-NE Recap PV&O`.Type_document, `NO-NE Recap PV&O`.`dernier CARI`, `NO-NE Recap PV&O`.Libellé, `NO-NE Recap PV&O`.Commission, `NO-NE Recap PV&O`.`S-Commissio" _
        , _
        "n`, `NO-NE Recap PV&O`.CoutPRSI, `NO-NE Recap PV&O`.CoutInvest, `NO-NE Recap PV&O`.CoutTotal, `NO-NE Recap PV&O`.Date_début_prév, `NO-NE Recap PV&O`.Date_fin_prév, `NO-NE Recap PV&O`.VAN" & Chr(13) & "" & Chr(10) & "FROM `\\b561782\sav\Ma " _
        , "base NO-NE`.`NO-NE Recap PV&O` `NO-NE Recap PV&O`")
        .Name = "RecapPVO_3"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
End With

Requête modifiée :
With ActiveSheet.QueryTables.Add(Connection: = _
        "ODBC;DSN=MS Access Database;DBQ=\\b561782\sav\SuiviDeNONE.mdb;DefaultDir=E:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT `NO-NE Recap PV&O`.Code_document, `NO-NE Recap PV&O`.Type_document, `NO-NE Recap PV&O`.`dernier CARI`, `NO-NE Recap PV&O`.Libellé, `NO-NE Recap PV&O`.Commission, `NO-NE Recap PV&O`.`S-Commissio" _
        , _
        "n`, `NO-NE Recap PV&O`.CoutPRSI, `NO-NE Recap PV&O`.CoutInvest, `NO-NE Recap PV&O`.CoutTotal, `NO-NE Recap PV&O`.Date_début_prév, `NO-NE Recap PV&O`.Date_fin_prév, `NO-NE Recap PV&O`.VAN" & Chr(13) & "" & Chr(10) & "FROM `\\b561782\sav\SuiviDeNONE`.`NO-NE Recap PV&O` `NO-NE Recap PV&O`")
        .Name = "RecapPVO_3"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
End With

Je pense que c'est à cause de la Fonction CHR , j'ai enlevé "" et j'ai essayé la fonction VBCRLF.
J'ai toujours cette même erreur 13.

Merci d'avance





[?] Estelle[8D]

3 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
2 oct. 2006 à 14:14
J'ai déjà eu ce pb, à priori, il n'est pas possible de stocker des CRLF dans un champ texte d'une base.

La parade qu'on avait trouvé était de remplace CRLF par un caractère "jamais" utilisé style §. Et quand tu lit ton champ, à toi de rechercher les § pour les transformer en CRLF.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 oct. 2006 à 18:59
Salut
Syntaxe on ne peut plus bizarre !
- Mais pourquoi veux-tu insérer un retour chariot dans une requète SQL.
  Tu le fais dans la requète : Est-ce que c'est dans les données que tu veux insérer ces caractères ?
- Pourquoi passes-tu par un Array ?
- As-tu vu que tu coupais ton texte en plein milieu, exemple :
(...) .`S-Commissio" _
        , _
        "n`, `NO-NE   (...)
Ca n'a aucun sens !

J'ai l'impression que tu fais une douce confusion entre la syntaxe VB et SQL.
Essaye ça :
.CommandText = "SELECT maTable.Code_document, " & _
                      "maTable.Type_document, " & _
                      "maTable.[dernier CARI], " & _
                      "maTable.[Libellé], " & _
                      "maTable.Commission, " & _
                      "maTable.[S-Commission], " _
                      "maTable.CoutPRSI, " & _
                      "maTable.CoutInvest, " & _
                      "maTable.CoutTotal, " _
                      "maTable.[Date_début_prév], " & _
                      "maTable.[Date_fin_prév], " & _
                      "maTable.VAN " & _
               "FROM [NO-NE Recap PV&O] As maTable"

Règles SQL mille fois répétées dans ce forum :
Il faut encadrer les noms de champs ou tables par des crochets [ et ] s'il comporte des accents ou caractères spéciaux comme les espaces et les &, - ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 oct. 2006 à 19:04
PS : Si les données ne proviennent pas de la même DB que celle dans laquelle tu veux faire l'insertion (ce qui n'est pas clair dans ton exemple puisque ta syntaxe modifiée s'adresse à une DB différente), essaye cette syntaxe :
"FROM [NO-NE Recap PV&O] As maTable in '\\b561782\sav\SuiviDeNONE.MDB'"
0
Rejoignez-nous