Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/10/2011, 10h02   #1
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Par défaut CommandText avec une variable

Salut,

J'ai deux codes, le premier fonctionne très bien :
Code :
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
VAL_SQL = "select ... " _
& "from ... " _
& "where " _
& "datref = to_date ('" & Range("B1").Value & "', 'DD/MM/YYYY') " _
& "and cde = '" & Range("B2").Value & "' " _
& "group by ... " _
& "Order by ..."
 
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
        "ODBC;..." _
        ), Array("fAllSuccessful;NUM=US;DPM=F;MTS=F;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=0;") _
        ), Destination:=Range("$A$9")).QueryTable
        .CommandText = Array(VAL_SQL)
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = _
        "LOT"
        .Refresh BackgroundQuery:=False
    End With
Mais pour celui là, j'ai toujours le message : Erreur d'exécution '13':, le code étant similaire, et je vais sur les même tables :
Code :
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
30
31
32
33
34
35
val_cde = ""
    For i = 2 To a
        val_cde = val_cde & "(datref = to_date('" & Range("A" & i).Value & "', 'DD/MM/YY') and cde = '" & Range("B" & i).Value & "') or " & Chr(13)
    Next
    val_cde = Mid(val_cde, 1, Len(val_cde) - 4)
 
    VAL_SQL = "select ... " _
        & "from ... " _
        & "where " & val_cde _
        & "order ..."
 
    MsgBox VAL_SQL
 
    Columns("E:Q").Select
    Selection.Delete Shift:=xlToLeft
 
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
        "ODBC;..." _
        ), Array("fAllSuccessful;NUM=US;DPM=F;MTS=F;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=0;") _
        ), Destination:=Range("$E$1")).QueryTable
        .CommandText = Array(val_cde)
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "TOP"
        .Refresh BackgroundQuery:=False
    End With
Cela me bloque toujours sur la ligne :
Code :
        .CommandText = Array(val_cde)
Mais si je crée manuellement en récupérant la variable VAL_SQL, cela fonctionne correctement.

Avez-vous des idées ?

Merci.
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 13h54   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 564
Points : 7 564
Array() sert à retourner un tableau à partir d'un liste de valeur pas une chaine de caratères (type String).

L'erreur 13 est "incompatibilité de type" donc probablement .CommandText s'attend à recevoir une chaîne de caractères car ta commande qui fonctionne utilise une chaîne de caractères.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h00   #3
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
J'ai bien deux chaines de caractères !!!

La seule différence que je vois est que dans le 1er cas j'ai une requête :
Code :
1
2
3
4
select ...
from ...
where (test)
orber ...
et dans le second cas, j'ai :
Code :
1
2
3
4
5
select ...
from ...
where (test1)
or (test2)
orber ...
Donc je ne vois pas où est mon problème !
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 16h48   #4
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Ca ne serait pas plutôt :

Code :
.CommandText = Array(VAL_SQL)
que :


Code :
.CommandText = Array(val_cde)
?

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h23.


 
 
 
 
Partenaires

Hébergement Web