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 :

Problème avec la fonction NTILE() en SQL dans Excel-VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Par défaut Problème avec la fonction NTILE() en SQL dans Excel-VBA
    Bonjour,

    j'ai un problème que je n'arrive pas à résoudre avec la fonction NTILE en SQL dans Excel-VBA. Comme mon problème est un peu compliqué, j'ai créé un exemple très simple afin de reproduire l'erreur sur laquelle je bute. Si vous arrivez à régler ce problème simplifié, je saurai ensuite l'adapter à mon problème plus compliqué.

    J'ai créé la base (pour l'exemple) suivante :
    Nom	Note
    Sophie	5
    Florent	17
    Marie 	19
    Marc	10
    Arthur	12
    Valérie	15
    Thomas	18
    Aurore	14
    David	8
    Solène	20
    Cette base est stockée dans la plage nommée Base2 du Classeur1.xlsm. Dans le Classeur2.xlsm, j'essaye de récupérer cette base dans un recordSet avec en plus le décile de chaque individu en fonction de sa note. Je souhaite donc utiliser la fonction NTILE. Je ne suis pas sûr de bien comprendre le fonctionnement de cette fonction. J'ai produit le code suivant :

    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
    Sub test()
        Dim Connexion As ADODB.Connection
        Dim monRecordSet As ADODB.Recordset
        Dim tableau() As Variant
        Set Connexion = New ADODB.Connection
        With Connexion
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & ThisWorkbook.Path + "\Classeur1.xlsm" & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        Set monRecordSet = Connexion.Execute("SELECT Nom, Note, NTILE(10) OVER(PARTITION BY Nom ORDER BY Note DESC) AS Quartile FROM Base2") 
        tableau = monRecordSet.GetRows
        Debug.Print UBound(tableau(), 1)
        Debug.Print UBound(tableau(), 2)
        monRecordSet.Requery
        Range("A1").CopyFromRecordset monRecordSet
        Connexion.Close
        Set Connexion = Nothing
    End Sub
    Le programme bug sur la ligne en gras. J'ai le message d'erreur suivant :
    Erreur d'exécution '-2147217900 (80040e14)':
    Erreur de syntaxe (opérateur absent) dans l'expression "NTILE(10) OVER(PARTITION BY Nom ORDER BY Note DESC)"

    D'où vient le problème ? La fonction NTILE est elle disponible en SQL dans VBA ou ai-je mal rédigé le code ? Je vous joins les deux fichiers (à mettre dans le même répertoire) pour que vous puissiez faire le test.

    Je vous remercie de votre aide.







  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    FROM [Base2$]

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Par défaut
    Bonjour,

    merci pour ce retour. J'ai essayé ce genre de choses, mais ce n'est pas ça. J'ai testé à l'instant et j'ai exactement la même erreur.

    Je me demande de plus en plus si la fonction existe en SQL sous Excel. J'ai l'impression qu'il y a pas mal de limitations au SQL sous Excel, mais je ne sais pas lesquelles. Si vous avez un bon livre sur le sujet je suis preneur.

    En tout cas, merci encore.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Par défaut
    Personne n'a une autre idée ? Est-ce que quelqu'un saurait si la fonction NTILE existe dans la version Excel de SQL ? Car si elle n'existe pas, pas la peine de chercher à trouver l'erreur dans la syntaxe...

Discussions similaires

  1. [Excel] La fonction wraptext et bordure
    Par maxeur dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/04/2007, 09h58
  2. Réponses: 5
    Dernier message: 14/06/2006, 12h21
  3. [SQL-Server] Problème avec la fonction mssql_connect (connexion PHP SQL Server)
    Par flydragon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2006, 11h59
  4. problème avec un telechargement d'un .csv dans Excel
    Par olosta dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/05/2006, 03h29
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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