Excel et Access Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
-
-arthur-
Membre habitué
Membre habitué
Messages : 148
Appréciations reçues : 2
Inscrit le : 30 octobre 2017
Version d'Excel : 2016

Message par -arthur- » 15 mai 2019, 09:20

Bonjour, je continu dans ce sujet car ma question a un rapport avec les fonctions que pierrep56 m'a donnée.

Y a t-il une limite de caractère dans la requête que l'on peut envoyé par ses fonctions ?

Cordialement.
-
-arthur-
Membre habitué
Membre habitué
Messages : 148
Appréciations reçues : 2
Inscrit le : 30 octobre 2017
Version d'Excel : 2016

Message par -arthur- » 15 mai 2019, 14:25

C'est bon, mon message d'erreur qui, je croyais, était du à une limite de caractères (car mon msgbox n'affichait pas toute ma requête) n'était du qu'au crochet que j'avait oubliés (car ma table comporte des nom de colonne avec espace, car elle est créée par exportation du tableau excel).

Merci de votre aide en tout cas,
cordialement,

Arthur.
Avatar du membre
pierrep56
Membre impliqué
Membre impliqué
Messages : 1'107
Appréciations reçues : 184
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 15 mai 2019, 14:25

Salut,

Si le texte de la requête est long, il est possible de la scinder en plusieurs parties.
Pour exemple, voici une requête "saucissonnée" issue d'une de mes appli :
     requete = "SELECT O1.PAYS, O1.FOURNISSEURS, O1.PRODUITS, O1.MOIS, O1.T14, O2.T15, O1.V14, O2.V15 " & _
                " FROM(SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA) AS T14, SUM(VOL) AS V14 " & _
                " FROM [" & Data1 & "] " & _
                " WHERE ANNEES=2014" & _
                " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O1" & _
                " LEFT JOIN (SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA)AS T15, SUM(VOL)AS V15 " & _
                " FROM [" & Data1 & "] " & _
                " WHERE ANNEES=2015" & _
                " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O2" & _
                " ON O1.PAYS=O2.PAYS AND O1.FOURNISSEURS=O2.FOURNISSEURS AND O1.PRODUITS=O2.PRODUITS"
            
    If Not Filtre1 = "" Then
        requete = requete & " WHERE O1.PAYS='" & UCase(Filtre1) & "' "
        If Not Filtre2 = "" Then requete = requete & " AND O1.FOURNISSEURS='" & UCase(Filtre2) & "' "
        If Not Filtre3 = "" Then requete = requete & " AND O1.PRODUITS='" & UCase(Filtre3) & "' "
    Else
       If Not Filtre2 = "" Then
            requete = requete & " WHERE O1.FOURNISSEURS='" & UCase(Filtre2) & "' "
            If Not Filtre3 = "" Then requete = requete & " AND O1.PRODUITS='" & UCase(Filtre3) & "' "
        Else
            If Not Filtre3 = "" Then requete = requete & " WHERE O1.PRODUITS='" & UCase(Filtre3) & "' "
        End If
    End If
    
    requete = requete & " ORDER BY O1.MOIS UNION ALL " & _
            " SELECT O2.PAYS, O2.FOURNISSEURS, O2.PRODUITS, O2.MOIS, O1.T14, O2.T15, O1.V14, O2.V15 " & _
                " FROM(SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA) AS T14, SUM(VOL) AS V14" & _
                " FROM [" & Data1 & "] " & _
                " WHERE ANNEES=2014" & _
                " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O1" & _
                " RIGHT JOIN (SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA)AS T15, SUM(VOL) AS V15 " & _
                " FROM [" & Data1 & "] " & _
                " WHERE ANNEES=2015" & _
                " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O2" & _
                " ON O1.PAYS=O2.PAYS AND O1.FOURNISSEURS=O2.FOURNISSEURS AND O1.PRODUITS=O2.PRODUITS"
            
    If Not Filtre1 = "" Then
        requete = requete & " WHERE O1.PAYS='" & UCase(Filtre1) & "' "
        If Not Filtre2 = "" Then requete = requete & " AND O1.FOURNISSEURS='" & UCase(Filtre2) & "' "
        If Not Filtre3 = "" Then requete = requete & " AND O1.PRODUITS='" & UCase(Filtre3) & "' "
    Else
       If Not Filtre2 = "" Then
            requete = requete & " WHERE O1.FOURNISSEURS='" & UCase(Filtre2) & "' "
            If Not Filtre3 = "" Then requete = requete & " AND O1.PRODUITS='" & UCase(Filtre3) & "' "
        Else
            If Not Filtre3 = "" Then requete = requete & " WHERE O1.PRODUITS='" & UCase(Filtre3) & "' "
        End If
    End If
    
    requete = requete & " ORDER BY O1.MOIS "
Pierre
-
-arthur-
Membre habitué
Membre habitué
Messages : 148
Appréciations reçues : 2
Inscrit le : 30 octobre 2017
Version d'Excel : 2016

Message par -arthur- » 20 mai 2019, 09:36

bonjour,
merci pour ta réponse :) finalement ce n'était pas la longueur de la requête le soucis, la msgbox n'affichait juste pas tout les caractères de ma requête. En plus j'avait 2-3 erreurs parsemées dans celle-ci :oops:

Dans tout les cas merci pour ton aide et tes fonctions :mrgreen:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Access
    par Sanaaa » 2 mai 2018, 03:50 » dans Office
    2 Réponses
    2085 Vues
    Dernier message par Sanaaa
    2 mai 2018, 10:06
  • Access help svp
    par kamellias » 22 février 2017, 07:26 » dans Office
    2 Réponses
    435 Vues
    Dernier message par kamellias
    22 février 2017, 20:07
  • VBA et Access
    par novicee » 20 avril 2017, 11:22 » dans Excel - VBA
    3 Réponses
    460 Vues
    Dernier message par pierrep56
    20 avril 2017, 16:53
  • Access 2013
    par Jeff1974 » 15 février 2015, 05:01 » dans Office
    1 Réponses
    903 Vues
    Dernier message par Silecya
    29 avril 2015, 17:01
  • base access
    par daffy85 » 2 septembre 2014, 09:40 » dans Excel - VBA
    1 Réponses
    389 Vues
    Dernier message par daffy85
    2 septembre 2014, 10:13
  • ERP Excel-Access
    par RaSk » 27 octobre 2015, 12:30 » dans Excel - VBA
    10 Réponses
    1924 Vues
    Dernier message par RaSk
    3 novembre 2015, 17:43