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ération de données EXCEL sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut Récupération de données EXCEL sous VBA
    Bonjour à tous.

    J'ai (forcément) un problème EXCEL sous VBA

    Quand j'utilise ces quelques lignes de 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
    24
    25
    26
    27
    Dim ConnectionString As String
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
     
     
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
     
     
        ConnectionString = "Driver={Microsoft Excel Driver (*.xls)}; "
        ConnectionString = ConnectionString + "dbq=" & Application.ActiveWorkbook.FullName & "; "
        ConnectionString = ConnectionString + "ReadOnly=False;"
     
     
        cn.Provider = "MSDASQL"
        cn.ConnectionString = ConnectionString
        cn.Open
        rs.CursorLocation = adUseClient
        rs.Open "SELECT '" & Columns(1).Select & "' FROM [Retour UPS$]", cn, adOpenDynamic, adLockOptimistic
     
        MsgBox rs.RecordCount
     
     
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
    Je me retrouve avec un recordset ou il y a le bon nombre d'enregistrement quand je fait rs.recordcount.

    Le problème est que quand je regarde les données dans le rs.fields(0).value, je me retrouve avec toutes les données identiques "vrai" au lieu d'avoir une année ("2009" au format texte).

    Merci d'avance aux personnes qui se pencheront sur mon problème.

    A+

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Dans ton code, je ne vois pas de boucle pour passer en revu chaque ligne de données de ton recordset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    rs.Open "SELECT '" & Columns(1).Select & "' FROM [Retour UPS$]", cn, adOpenDynamic, adLockOptimistic
     
    Do while not rs.EOF
     
        msgbox rs.fields(0).value
        rs.movenext
     
    Loop
     
     
    rs.Close

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Bonsoir jfontaine.

    Effectivement, je l'ai supprimé lors de la recherche du problème, mais toutes les valeurs dans le recordset son à "vrai".

    J'ai testé de faire le recordset sur une colonne vide, est il me dit qu'il est BOF ou EOF, donc bien vide.

    Apparemment, il détecte bien qu'il y a des valeurs et le nombre de lignes, mais j'ai l'impression qu'il teste si la valeur est vide ou non (comme pour un type booléen).

    Merci de te pencher sur mon cas.

    a+

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Je ne comprends pas cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT '" & Columns(1).Select & "'
    Personnellement, si je ne dois pas ramener tous les champs dans le Recordset, j'énumère les entêtes de colonnes dont j'ai besoin.
    Example avec un seul champ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT [Numéro] FROM [MaFeuille$]"
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Est-tu certain(e) de l'indice de la colonne du combobox? Tu pourrais t'en assurer avec
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Salut.

    AlainTech: si je mets l'indice 1 pour la colonne, il me ressort 1 pour toutes les valeurs, si je mets entre crochés "[1]" j'ai droit a une message 'trop peut de paramètre, 1 attendu"

    Pierre Fauconnier: en mettant en .name, j'ai la valeur suivante: Expr1000 pour toutes les valeurs.

    Pour infos (au cas ou), je cherche à récupérer toutes les valeurs de la colonne sélectionnée, a savoir aussi que la cellule1 est fusionnée avec d'autres pour l'intitulé de la feuille, et dans la cellule 2 un simple texte pour dénominer la colonne.

    Une autre info, si je mets "Select * FROM ...." je récupère bien les valeurs, mais je ne peux pas tout prendre car il y a 10 000 enregistrements sur 8 colonnes dans une feuille que je doit comparer à 6 000 enregistrements sur 10 colonnes d'une autre feuille.

    Merci pour l'aide

    a+

    pour info excel 2003 pro SP2

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2013, 11h05
  2. trier des données excel grâce à VBA
    Par fred2949 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/01/2008, 19h27
  3. Supprimer des données Excel sous VBA Access
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/10/2007, 09h55
  4. import de donnée excel sous word
    Par CoOki_ dans le forum Word
    Réponses: 5
    Dernier message: 17/08/2007, 18h16
  5. Extration de données Excel via VBA
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/04/2007, 09h08

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