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   -
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.
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:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Il faut laisser le and mais retirer le where.

Et il faudra un espace avant le and
1
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
C'était exactement ça. Merci beaucoup!
0