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 :

Requete SQL plus de 65000 lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut Requete SQL plus de 65000 lignes
    Bonjour à tous,

    Savez-vous comment faire un requête SQL dans un fichier Excel (.xlsm) sur une plage de cellules de plus de 65000 lignes

    J'ai commencé à faire un outils qui fonctionne bien, avec plusieurs requêtes imbriquées, mais là je tombe sur un os:
    The Microsoft Access database could not find the object ...
    (avec 65000 lignes ça marche, avec 66000 lignes ça ne marche plus).

    Merci pour votre aide

    La connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Set Conn = New ADODB.Connection
     
        With Conn   'New ADODB.Connection
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & ThisWorkbook.FullName & _
                ";Extended Properties=""Excel 12.0;HDR=YES"";"
            .Open
        End With

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Set Conn = New ADODB.Connection
     
        With Conn   'New ADODB.Connection
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & ThisWorkbook.FullName & _
                ";Extended Properties=""Excel 12.0;HDR=YES"";"
     ActiveCell.CopyFromRecordset .execute("Select * from [Feulle1$A50:E65000]")
            .Open
        End With

  3. #3
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Bonjour dysorthographie,
    Le code que tu as envoyé fonctionne-t-il encore avec 66000 lignes ?

    Ma demande c'est, en fait, d'aller au delà de 65536 lignes.

  4. #4
    Invité
    Invité(e)
    Par défaut
    j'ai rencontré de problème au delà d'une certaine valeur alors que pour moi ça sevrait marcher fais un teste pour augmenter From [Feulle1$A50:E1048576] !

  5. #5
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    j'ai rencontré de problème au delà d'une certaine valeur alors que pour moi ça sevrait marcher fais un teste pour augmenter From [Feulle1$A50:E1048576] !
    STP peux-tu faire le test

  6. #6
    Invité
    Invité(e)
    Par défaut
    j’arrive à faire ça Sql = "Select * from [Feuil1$B3:F10485]"
    et pas ça Sql = "Select * from [Feuil1$B3:F1048576]"

    ?????????????????????????????????????????????????????????

  7. #7
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Voilà c'est bien ça le problème utiliser une table au delà de 65536 lignes.

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    je n'ai pas vraiment compris depuis la sortie de la version 2007 l'intérêt du passage du nombre total de lignes de 65 536 à 1 048 576
    car beaucoup de fonctionnalités d'Excel restant limitées à 65 536 voire même en dessous, et ce avec une certaine omerta de Microsoft !

    C'est vrai, faut-il encore rappeler la vocation première d'Excel, un tableur servant juste à calculer, ce n'est pas un SGDB …
    Qui plus est pour des traitements équivalents de données, Access est au bas mot 50 fois plus rapide, parfois même 2 fois plus encore !

    _____________________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonsoir Marc,

    Entièrement d'accord comme le dit Clément Macotte!

    Ado peux être utilisé sur Excel mais il faut pas mélanger le genres!

    En revanche si tu n'avais pas a sélectionné un plage parce que ta lignes de titres commençait en A1 tu n'aurais pas de problème!

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Il y a quelques années un pote évoque mon éventuel coup de main pour son futur projet VBA pro d'une base de données sous Excel.
    Évidemment je mets le holà n'appartenant pas à sa société, il tente de forcer avec un « t'inquiète c'est juste pour le prototypage »
    et moi de lui rétorquer « de toute manière ce n'est pas une bonne idée sous Excel, une vraie base de données c'est sous Access ! »
    Suit son argument « c'est plus facile pour moi et toi aussi t'es plus à l'aise sous Excel » etc …
    Bref je l'ai aidé ponctuellement et sans m'y investir tout en continuant de le mettre en garde
    car son prototype devenant de plus en plus gros et avec une nouvelle donne : du réseau et du multi-utilisateurs …

    Pas difficile de deviner la suite, même si parfois je lui disais que je n'avais pas de solution sous le coude avec Excel
    alors qu'avec Access « c'est prévu pour », il n'a pas varié d'un pouce puis son projet n'étant pas viable avec Excel,
    cela a failli lui coûter son poste ! Coup de bol, ses idées et sa personnalité étant appréciées, il s'est fait octroyer une formation Access.
    Et il finira par m'avouer « Tu ne m'as pas rendu service car j'ai eu chaud mais j'ai vraiment été con d'insister sur ce coup là ! » …

    ___________________________________________________________________________________________________________________________
    La meilleure façon de ne pas avancer est de suivre une idée fixe. (Jacques Prévert)

  11. #11
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    ... son prototype devenant de plus en plus gros et avec une nouvelle donne : du réseau et du multi-utilisateurs ...
    C'est l'histoire de ma vie.

    Merci Clément de prendre de la hauteur et de voir le besoin derrière la demande.
    Est-ce qu'une application déployée sous forme d'un composant (COM) Office, développé en C#, pourrait fonctionner en multi-utilisateur, sans avoir à déployer SQL server sur chaque poste client ?
    Et sans payer de licence supplémentaire pour chaque utilisateur.

  12. #12
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    En revanche si tu n'avais pas a sélectionné un plage parce que ta lignes de titres commençait en A1 tu n'aurais pas de problème!
    C'est à dire:

    Au lieu de spécifier la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from [Feuil1$A1:F1048576]
    Adresser directement la feuille dans sa globalité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from [Feuil1$]

  13. #13
    Invité
    Invité(e)
    Par défaut
    Personnellement je suis pour bannir Access également! Avec les versions Express de Microsoft autant prendre Sql Serveur si l'application dépasse la capacité (1 Téra quand même) mais 15 utilisateurs!!

    Si j'ai l'ambition de voir ma société prospérer, je m'affranchi d'une éventuel migration!

  14. #14
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Oui tout dépend déjà de l'importance du projet et qui le réalise, un pro ne restant pas cantonné à Office …

    Certains ayant déjà du mal avec Excel, leur parler d'Access est difficile mais avec SQL Serveur ils partent en courant !
    On les a trop habitués à faire tout et n'importe quoi en VBA, particulièrement sous Excel …

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

Discussions similaires

  1. transfert de plus de 65000 ligne d'access a excel
    Par Dams90 dans le forum Access
    Réponses: 1
    Dernier message: 27/08/2010, 17h23
  2. Réponses: 2
    Dernier message: 15/02/2010, 01h07
  3. requete sql pour selectionner la ligne suivante
    Par evra76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/10/2009, 12h12
  4. Réponses: 2
    Dernier message: 18/08/2009, 21h14
  5. Réponses: 5
    Dernier message: 17/03/2009, 10h18

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