Autres XL2007 : Problème requête SQL WHERE

  • Initiateur de la discussion Initiateur de la discussion erics83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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,
 
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
 
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,
 
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,
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
771
Réponses
1
Affichages
686
Réponses
5
Affichages
683
D
Réponses
4
Affichages
308
DidPouAxi
D
Réponses
3
Affichages
298
Retour