cpari09
Messages postés9Date d'inscriptionlundi 5 octobre 2009StatutMembreDernière intervention18 décembre 2009
-
5 oct. 2009 à 16:22
cpari09
Messages postés9Date d'inscriptionlundi 5 octobre 2009StatutMembreDernière intervention18 décembre 2009
-
6 oct. 2009 à 14:36
Bonjour à tous,
J'ai une macro dans laquelle je code une requête SQL de la forme :
select ma_donnee2 from ma_table where ma_donnee1 IN ('" & Range("A2").Value & "','" & Range("A3").Value & "','" & Range("A3").Value & "')
Cette requête fonctionne.
Mon pb est que ma liste de critères dans la clause IN est potentiellement trés longue.
J'ai affecté un nom (nom_liste) à ma liste de critères dans ma feuille de calcul.
Est-ce que je peux utiliser nom_liste dans mes critères de requête SQL en substitution de ma longue liste ? J'ai essayé plusieurs syntaxes mais sans succès...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 6 oct. 2009 à 10:19
Salut
Normalement, si MS respectait les constructions de syntaxe d'origine de SQL, on pourrait faire
Select * From maTable Where monChamp In (Select AutreChamp From AutreTable)
mais ce n'est pas possible.
As-tu essayé de nommer la plage de cellule A2 à A4012 en "maZone", par exemple, et de l'utiliser directement, genre "... In (maZone)"
Ce que tu peux faire, c'est préparer dans une chaine le contenu de ce qui se trouve dans ta parenthèse, exemple :
Dim maChaine As String
Dim r As Long
For r = 2 To 4012
maChaine = maChaine & "'" & Cells(1, r).Value & "',"
Next r
' Supprime dernière virgule
maChaine = Left$(maChaine, Len(maChaine) - 1)
' Requète
maRequete = "Select ma_donnee2 " & _
" From ma_table " & _
" Where ma_donnee1 IN (" & maChaine & ")"
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)