Erreur d'exécution SQL dans macro VBA
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec une macro avec une requête SQL dont voici le message d'erreur:
Ce que je veux faire, c'est de sortir d'un fichier Excel fermé la valeur de la colonne "NO_PIEZO" qui correspond à une valeur de la ligne de la colonne "NO_SONDAGE" et à une autre valeur de la ligne de la colonne "PROF_BAS_CREPINE".
J'ai essayé en enlevant la fonction "and" de la fin et ça fonctionnait, il me sortait toutes les correspondances.
Je ne m'y connais pas assez en sql, j'ai donc fait des recherches sur le net, mais sans trouver de solution à mon problème.
Voici mon code:
Merci,
J'ai un problème avec une macro avec une requête SQL dont voici le message d'erreur:

Ce que je veux faire, c'est de sortir d'un fichier Excel fermé la valeur de la colonne "NO_PIEZO" qui correspond à une valeur de la ligne de la colonne "NO_SONDAGE" et à une autre valeur de la ligne de la colonne "PROF_BAS_CREPINE".
J'ai essayé en enlevant la fonction "and" de la fin et ça fonctionnait, il me sortait toutes les correspondances.
texte_SQL = "SELECT " & SeriePiezo & " FROM [" & Table & "] WHERE " & Champ & " like '" & "%" & Sondage & "%';"
Je ne m'y connais pas assez en sql, j'ai donc fait des recherches sur le net, mais sans trouver de solution à mon problème.
Voici mon code:
Public T_NT As String
Sub Recherche_Piezo()
Dim Cn As Object
Dim Rst As Object 'Comparaison des deux fichiers
Dim Fichier2, texte_SQL As String
Dim NomFeuille As String
'-----------------------------
With Worksheets(2)
Sondage = .Range("A2")
longtotale = Len(Range("E1"))
debut = InStr(1, Range("E1"), "_") + 1
resultat = longtotale - debut
Piezo = Mid(.Range("E1"), debut, resultat)
End With
'Définit le classeur fermé servant de base de données
Fichier2 = "T:\Geotechnique\Mouvements\Entrepot\BDFS\0_Sondages_a_saisir_Geotec\" & "PIEZOMETRE.xlsx"
'Nom de la feuille dans le classeur fermé
Table = "PIEZOMETRE" & "$"
champ = "NO_SONDAGE"
ChampProf = "PROF_BAS_CREPINE"
SeriePiezo = "NO_PIEZO"
'--- Connexion ---
Set Cn = CreateObject("ADODB.connection")
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier2 & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'... la requête avec WHERE et LIKE
Set Rst = CreateObject("ADODB.Recordset")
'texte_SQL = "SELECT " & SeriePiezo & " FROM [" & Table & "] WHERE " & Champ & " like '" & "%" & Sondage & "%';"
'Problème avec la requete SQL
'*****************************
texte_SQL = "SELECT " & SeriePiezo & " FROM [" & Table & "] WHERE " & champ & " like '" & "%" & Sondage & "%'and WHERE " & ChampProf & " = " & Piezo ';"
Rst.Open texte_SQL, Cn, adOpenStatic
'Ecriture dans la feuille de calcul
If Not Rst.EOF Then
ActiveSheet.Cells(2, 1).CopyFromRecordset Rst
Rst.MoveFirst
tsondage = Rst.GetRows
Nb = UBound(tsondage, 2)
If Nb > 0 Then
TS = "["
For NS = 0 To Nb: TS = TS & tsondage(0, NS) & " ¤ ": Next NS
If NS >= 2 Then
UserForm3.Show
Else
TS = Left(TS, Len(TS) - 3) & "]"
T_NT = T_NT & vbNewLine & Sondage & " en " & Nb + 1 & " exemplaires " & vbNewLine & TS
End If
End If
Else
'Infos non trouvees
T_NT = T_NT & vbNewLine & Sondage
End If
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub
Merci,
Configuration: Windows / Chrome 87.0.4280.141
A voir également:
- Erreur d'exécution SQL dans macro VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows