IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Jointure requête sql [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut Jointure requête sql
    Bonjour,

    J'essaie de joindre deux plages de cellules avec une requête sql.

    Ma 1er plage se nomme: BDANALYSE

    Nom : sanalyse.jpg
Affichages : 125
Taille : 62,7 Ko

    Ma 2eme plage se nomme: BDCOURRIEL

    Nom : scourriel.jpg
Affichages : 139
Taille : 34,1 Ko

    Mes fonctions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Get_Fiche_ANALYSE(Id, Da)
    Dim requete As String
     
        requete = "SELECT C.*, T.Type, T.Mail, T.DA_Chorus " & _
                    " FROM BDANALYSE AS C" & _
                    " LEFT JOIN BDCOURRIEL AS T ON C.DA_Chorus=T.DA_Chorus " & _
                    " WHERE C.C_Id=" & Id
     
        Get_Fiche_ANALYSE = Sql.Query(requete)
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Function Query(requete As String, Optional NDF As String = "Q")
    Dim Cnx As Object, Rst As Object
    Dim NDF_Data As String
    Dim Col_SQL As Integer, i As Long, j As Integer
     
        On Error GoTo errhdlr
        'NDF_Data = Activedocument.Path & "\" & NDF ' code pour Word
        NDF_Data = IIf(NDF = "Q", ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, NDF) ' Code pour XL
     
        Set Cnx = CreateObject("ADODB.Connection")
        With Cnx
            .Provider = "MSDASQL"
            .ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
                "DBQ=" & NDF_Data & "; ReadOnly=False;"
            .Open
        End With
        Set Rst = CreateObject("ADODB.Recordset")
     
        If Left(requete, 6) = "SELECT" Then
            Rst.Open requete, Cnx, 3    ' adOpenStatic
            Query = Rst.RecordCount
            Col_SQL = Rst.Fields.Count - 1
            ReDim Ent(Col_SQL)
            For i = 0 To Col_SQL
                Ent(i) = Rst.Fields(i).Name
            Next i
            If Not Query = 0 Then
                ReDim RcdSt(Col_SQL, Query - 1)
                ReDim StRcd(Query - 1, Col_SQL)
                Rst.movefirst
                RcdSt = Rst.GetRows
                For i = 0 To Query - 1
                    For j = 0 To Col_SQL
                        If Not IsNull(RcdSt(j, i)) And Not RcdSt(j, i) = "" Then
                            StRcd(i, j) = RcdSt(j, i)
                        End If
                    Next j
                Next i
    ' ***********************************************************************
                'Rst.MoveFirst
                'Sheets(Pref).Range("X2").CopyFromRecordset Rst
    ' ***********************************************************************
            End If
        Else
            Query = 1
            Set Rst = Cnx.Execute(requete)
        End If
     
        Cnx.Close
        Set Cnx = Nothing
        Set Rst = Nothing
        Exit Function
     
    errhdlr:
        If Not Rst Is Nothing Then
            If Rst.State = 1 Then Rst.Close
        End If
        Set Rst = Nothing
     
        If Not Cnx Is Nothing Then
            If Cnx.State = 1 Then Cnx.Close
        End If
        Set Cnx = Nothing
        MsgBox (Err.Description & vbCrLf & vbCrLf & "Vérifier la requête (ou son appel) : " & _
                vbCrLf & requete)
    End Function
    Le message d'erreur:

    Nom : serreur.jpg
Affichages : 125
Taille : 23,5 Ko

    Ma colonne C_Id est de type nombre
    Mes colonnes DA_Chorus sont de type texte

    La gestion d'erreur se déclenche en ligne 20 de la 2eme fonction.

    Merci pour vos suggestions

    Eric

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 269
    Points
    34 269
    Par défaut
    Salut,

    as-tu essayé en castant ton champs filtré ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " WHERE Clng(C.C_Id)=" & Id
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    Merci



    Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème jointure requête SQL
    Par totot dans le forum Langage SQL
    Réponses: 9
    Dernier message: 09/04/2015, 20h08
  2. Requête SQL : Jointure sur 3 tables - Bd Access 1997 & Delphi 7
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/12/2007, 09h57
  3. bouclage dans une requête SQL aec jointure
    Par lbar012001 dans le forum SQL
    Réponses: 4
    Dernier message: 31/10/2007, 17h58
  4. [Requêtes SQL] Problème de jointure ?
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/12/2006, 15h37
  5. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo