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 :

Récupérer le contenu d'une cellule Excel via le SQL


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Récupérer le contenu d'une cellule Excel via le SQL
    Bonjour

    J'ai suivi le tutoriel et adapté or il y a un élément que je ne comprends pas.
    Je n'arrive pas à indiquer en plus du nom de la feuille, la référence de la cellule dont je veux lire le contenu. La syntaxe est erronée (selon Excel)..

    Merci pour votre aide

    voici le code..
    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
     
     
    Sub Requete()
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Fichier = "C:\Classeur1.xls"
        NomFeuille = "Feuil1"
        Cellule = "C4"
        Set Cn = createobject("ADODB.Connection")
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        texte_SQL = "SELECT * FROM [" & NomFeuille & Cellule & "$]"
        Set Rst = createobject("ADODB.Recordset")
        Set Rst = Cn.Execute(texte_SQL)
        Range("A2").CopyFromRecordset Rst
        Cn.Close
        Set Cn = Nothing
     
    End Sub

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 468
    Points : 16 348
    Points
    16 348
    Par défaut
    Bonjour

    Je n'ai pas lu tutoriel en entier, mais je ne crois qu'il faudrait définir cellule en "C4:C4".
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Merci

    le tutoriel ne mentionne pas la récupération d'une cellule mais de toute la feuille. J'ai ajouté (logiquement) la référence à une cellule, ce qui n'a pas marché, mais je vais essayer votre idée.

    edit : j'ai essayé mais ça ne retourne ni erreur ni donnée : c'est vide

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 468
    Points : 16 348
    Points
    16 348
    Par défaut
    Bonjour

    Si je regarde le tutoriel http://silkyroad.developpez.com/VBA/ClasseursFermes/ il y a un code intitulé "Vous pouvez également lire une cellule spécifique, ou une plage de cellules, en utilisant la méthode ADO."

    Regarde ce code
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    oui, j'avais commencé par cette méthode ADO or elle ne fonctionne pas sur mon poste (je ne sais pourquoi) aussi je suis resté sur l'ancienne méthode.

    Depuis j'ai une piste : mettre : Cellule = "C4:C5" marcherait mieux

  6. #6
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    dans le lien donné par 78chris il y a une possibilité sans ADO, c'est l'utilisation des macros excel4.
    le code ci-dessous va Lire la cellule C4 de la Feuil1 du classeur nommé Classeur1.xls et mettre le résultat dans une variable.
    le msgbox affiche le contenu de la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    'Lecture et écriture dans une variable de la cellule C4 de la Feuil1 du classeur fermé Classeur1
    mavariable = ExecuteExcel4Macro("'C:\[Classeur1.xls]Feuil1'!R4C3")
    MsgBox mavariable
    End Sub
    Attention l'adresse de la cellule est du type R1C1. Si tu mets directement "C4" il ne retournera pas la bonne info
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Merci je vais essayer

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    la solution

    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
    Sub Requete()
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Fichier = "C:\Classeur1.xls"
        NomFeuille = "Feuil1"
        Cellule = "C4:C5" (sinon ça ne retourne rien)
        Set Cn = createobject("ADODB.Connection")
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        texte_SQL = "SELECT * FROM [" & NomFeuille & Cellule & "$]"
        Set Rst = createobject("ADODB.Recordset")
        Set Rst = Cn.Execute(texte_SQL)
        Range("A2").CopyFromRecordset Rst
        Cn.Close
        Set Cn = Nothing
     
    End Sub

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/09/2007, 16h18
  2. Réponses: 7
    Dernier message: 08/03/2007, 11h08
  3. [VB.NET][FlexGrid]Récupérer le contenu d'une cellule de FlexGrid
    Par kinganasius dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/06/2006, 17h11
  4. Importer le contenu d'une cellule Excel vers Access
    Par deaqu1 dans le forum Access
    Réponses: 7
    Dernier message: 05/11/2005, 15h26
  5. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50

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