Erreur requête SQL en VBA dans Excel

sergeith Messages postés 3 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 3 août 2009 - 4 juin 2009 à 10:54
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 juin 2009 à 13:56
Bonjour    
 
j'ai beau regarder tous les sujets du net à propos de cette erreur : "Aucune valeur donnée pour un ou plusieurs des parametres requis"
 
je n'arrive pas à la résoudre.

 
je tente une connexion à un classeur fermé excel qui contient deux feuilles : Temp et Tempsecteur

 
chacune des deux feuilles contient des données avec les colonnes suivantes  
 
Temp :            | Num commune| Num client | Code rue |

Tempsecteur : |test red | code entier | Code_commune | Code_rue |

 
Mon code :
 
Set cn = New ADODB.Connection

                               

With cn

                              .Provider = "Microsoft.Jet.OLEDB.4.0"

                              .ConnectionString = "Data Source=" & emplacement & _

                                              ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"""

                              .Open

End With

                             
texte_SQL = "SELECT * FROM
[Temp$],[Tempsecteur$] Where  [Temp$].[Num commune] =
[Tempsecteur$].[Code_commune] " and [Temp$].[Code rue] =
[Tempsecteur$].[Code_rue] "

 
Set Rst = New ADODB.Recordset

Set Rst = cn.Execute(texte_SQL) 'Ligne ou l'erreur apparaît
 
Je ne sait pas d'où vient le problème... Certaines colonnes possède des espaces  
 (je précise que ce n'est pas moi qui ai créé la base de donnée d'où
proviennent ces tables), c'est pour cela que j'ai tout mis entre
crochet. Mais même si je tente de renommer les colonnes avant ma
requête afin qu'il n'y ai plus d'espace, la même erreur arrive    
 
si quelqu'un à une idée... 

11 réponses

hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
4 juin 2009 à 10:58
Bonjour,
texte_SQL "SELECT * FROM [Temp$],[Tempsecteur$] Where  [Temp$].[Num commune] [Tempsecteur$].[Code_commune] " and [Temp$].[Code rue] = [Tempsecteur$].[Code_rue] "

Alors si tu as bien fait ton copier coller, qu'est ce que ce guillemet fait la???

J'ai pas regardé le reste.... J'ai juste regardé ta requete.

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
sergeith Messages postés 3 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 3 août 2009
4 juin 2009 à 11:01
Salut, ouai effectivement mon copié collé est raté, j'avais mis cette guillemet pour couper en deux ma requete (je voulais tester pas à pas ce qui pouvait planter...

comme tu t'en doute ma requête ressemble plus à cela :

texte_SQL = "SELECT * FROM [Temp$],[Tempsecteur$] Where  [Temp$].[Num
commune] [Tempsecteur$].[Code_commune]  and [Temp$].[Code rue]
[Tempsecteur$].[Code_rue] "
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
4 juin 2009 à 12:33
Re :
Essaye ce code... Je n'ai pas testé !
Par contre je suis pas spécialiste en sql mais quel est l'interet des dollars dans tes noms?
   Dim dbs As Database, 
   Dim rst As Recordset

   Set rst = dbs.OpenRecordset("SELECT * FROM [Temp$] " _
       ",[Tempsecteur$] Where  [Temp$].[Num commune] = [Tempsecteur$].[Code_commune] " _

       "and [Temp$].[Code rue] = [Tempsecteur$].[Code_rue];")



HellAngel777<hr />Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juin 2009 à 12:41
salut,



[../auteur/SERGEITH/1703606.aspx sergeith]

-> en faisant juste
texte_SQL = "SELECT [Code_commune] FROM [Tempsecteur$]"
tu aurais vu que le problème ici est le nom des colonnes qui n'est apparemment pas récupérable

voici une manière pour une lecture facile, qui fonctionne






    'Table TEMP

    Const aNumCommune   As String = "F1"
    Const aNumClient    As String = "F2"
    Const aCodeRue      As String = "F3"
   
    'Table
TEMPSECTEUR
    Const bTestRed      As String = "F1"
    Const bCodeEntier   As String = "F2"
    Const bCodeCommune  As String = "F3"
    Const bCodeRue      As String = "F4"

    Dim sSql As String
    sSql = "SELECT * " & _
           "FROM [Temp$],
[Tempsecteur$] " & _
           "WHERE [Temp$]." & aNumCommune & " =
[Tempsecteur$]." & bCodeCommune & "
" & _
           "AND [Temp$]." & aCodeRue & " =
[Tempsecteur$]." & bCodeRue & ";"





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>








++


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0

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

Posez votre question
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
4 juin 2009 à 12:42
Salut

Es-tu sûr que la connexion à la DB soit réussie ?
Que vaut cn.State après le .Open ?

Des "$" dans le nom des tables : J'aurai jamais osé.

Au lieu d'utiliser 
   Set Rst = cn.Execute
essaye cette syntaxe
   Rst.Open texte_SQL, cn
En général, Execute n'est utilisé que pour les requètes ne devant récupérer aucune données (Delete ou Insert par exemple)

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juin 2009 à 12:43
salut

[../auteur/HELLANGEL777/1600282.aspx hellangel777]

,

$ dans les noms, spécifique excel. pour signaler que c'est le nom de la feuille
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
4 juin 2009 à 12:46
Bonjour PCPT

Merci de l'info...

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
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
4 juin 2009 à 12:47
PCPT : perso, je comprends rien à l'utilisation de tes F1, F2 ...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juin 2009 à 13:15
salut

[../auteur/JACK/2204.aspx jack]

,

par ADO on a pas le nom des champs, ils sont en première ligne mais ne représentent pas le header qui est "F+numéro_champ"

les constantes juste pour être plus lisible


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
sergeith Messages postés 3 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 3 août 2009
4 juin 2009 à 13:35
Merci pour vos réponses

effectivement le $ c'est pour signaler que c'est le nom d'une feuille excel

PCPT: je crois que je ne pouvais pas récupérer les nom des colonnes à cause de ma chaîne de connexion :

.ConnectionString = "Data Source=" & emplacement & _
                                              ";Extended Properties=""Excel 8.0;HDR= No ;IMEX =1;"""

au lieu de

.ConnectionString = "Data Source=" & emplacement & _
                                              ";Extended Properties=""Excel 8.0;HDR= Yes ;IMEX =1;"""

jack: Merci, si j'ai des problèmes avec cn.execute je testerai avec rst.open :)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juin 2009 à 13:56
en effet, en passant à YES on peut alors nommer par le contenu de la première ligne, et le premier enregistrement est alors la 2e ligne

testé avec ado 2.8

çà m'apprendra aussi à recopier bêtement
0
Rejoignez-nous