[Déplacé VB6 --> VBA] Requête SQL avec clause IN

Résolu
cpari09 Messages postés 9 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 18 décembre 2009 - 5 oct. 2009 à 16:22
cpari09 Messages postés 9 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 18 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...

Merci de votre aide...

2 réponses

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
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)
3
cpari09 Messages postés 9 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 18 décembre 2009
6 oct. 2009 à 14:36
Bonjour Jack,

Un grand merci pour ton conseil : ca fonctionne !
0
Rejoignez-nous