Autres XL2007 : Problème requête SQL WHERE

erics83

XLDnaute Impliqué
Bonjour,

Je pense que cela doit être très simple...mais je n'ai pas trouvé....

J'ai dans une requête SQL (j'utilise les ADO de JB), une recherche style :
VB:
WHERE clef1='Asie'
donc là, je sais que je cherche nominativement "Asie" dans le champ "clef1", mais j'ai une boucle qui tourne et j'aimerai faire des recherches sur d'autres noms (exemple : Europe). J'ai essayé :
Code:
dim rech as string
rech="Europe"

....WHERE clef1= rech 'marche pas
....WHERE clef1= ' & rech & ' 'marche pas
....WHERE clef1= "'" & rech & "'" 'pas accepté

Merci pour votre aide,
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous pouvez faire :
.... WHERE clef1 in ('Asie','Europe','Afrique','Inde', 'Ailleurs')

Vous pouvez également faire une boucle for pour construire la chaîne de caractères in style :
VB:
Dim t As Variant, valeur As Variant
Dim chaine As String
chaine = "("
t = Array("Asie", "Europe", "Afrique")
For Each valeur In t
    chaine = chaine & "'" & valeur & "',"
Next
chaine = Left(chaine, Len(chaine) - 1) & ")"
Debug.Print chaine

Eventuellement en bouclant non pas sur un tableau mais sur un range.

Cordialement
 

erics83

XLDnaute Impliqué
Merci Roblochon,

En fait la boucle se fait et "donne" un seul résultat que je place en Feuil2.Cell(1,1)
J'ai essayé de reproduire votre code, mais....cela ne fonctionne pas :
VB:
rech = Feuil2.Cells(1, 1)
  Set cnn = New ADODB.Connection
 cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
     répertoire & "\" & fichier & ";Extended Properties='Excel 12.0;HDR=Yes'"
'Set rs = cnn.Execute("SELECT Clef1,clef2,Clef3,clef4,clef5 FROM MaBD WHERE Clef1='Asie'")
Set rs = cnn.Execute("SELECT Clef1,clef2,Clef3,clef4,clef5 FROM MaBD WHERE Clef1 in ("'" & rech & "'") ")
Enfin, c'est l'éditeur qui ne veut pas accepter et me met "erreur de compilation"...je pense à une erreur d'écriture (de ma part) , mais je ne vois pas où....

Merci pour votre aide,
 

erics83

XLDnaute Impliqué
Merci Roblochon,

Car vous m'avez aiguillé dans l'écriture...,j'ai repris la logique de l'écriture que vous m'avez donné et j'ai fait :
VB:
Set rs = cnn.Execute("SELECT Clef1,clef2,Clef3,clef4,clef5 FROM MaBD WHERE Clef1 = (" & "'" & rech & "'" & ") ")
Qui fonctionne ...!

Merci pour vos éclairages,
 

dysorthographie

XLDnaute Accro
Bonjour,

Si je comprends bien tu veux récupérer via requête Sql des données dans un autre ficher EXCEL et le tout en relation avec une colonne de ton fichier actif ? C’est bien cela ?

Si oui, je t’invite a faire une jointeur externe entre ton fichier actif et ton fichier externe

Pour ce faire on fait la connexion sur le classeur Actif ThisWorkbook.FullName et indique dans la requête le chemin de la jointeur externe FROM [MaBD] in '" & répertoire & "\" & fichier & "' 'Excel 12.0;HDR=Yes;'"

Code:
 Sub test()
Dim Sql As StringSql = "SELECT Clef1,clef2,Clef3,clef4,clef5 FROM [MaBD] in '" & répertoire & "\" & fichier & "' 'Excel 12.0;HDR=Yes;'"
Sql = Sql & " where Clef1 in( Select Clef1 from [Feuil3$])"
With CreateObject("ADODB.Connection")
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=Yes'"

   Set Rs = .Execute(Sql)
    .Close
End With
End Sub
 

Discussions similaires