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é
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo