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 :

Créer un recordset à partir d'un tableau Excel filtré [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut Créer un recordset à partir d'un tableau Excel filtré
    bonjour à tous,


    J'ai un tableau Excel Filtré.
    Je souhaite créer un recordset mais à partir du résultat filtré uniquement.
    Or lorsque je créé mon recordset, j'obtiens toutes les données

    voici mon programme :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub test()
     
        Dim Conn As ADODB.Connection
        'Dim rsT As ADODB.Recordset
        Dim Fichier As String, Direction As String, rSQL As String
     
     
        'Données de ce fichier
        Direction = ThisWorkbook.Path
        Fichier = ThisWorkbook.Name
     
     
        'Ouverture de la connection
        Set Conn = New ADODB.Connection
        With Conn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Direction & "\" & Fichier & _
        ";Extended Properties=Excel 8.0;"
        .Open
        End With
     
        'Déclaration de la recherche SQL
        rSQL = "SELECT * FROM [Sheet1$]"
     
     
        'Execution de la recherche SQL
        Set rsT = New ADODB.Recordset
        With rsT
        .ActiveConnection = Conn
        .Open rSQL, , adOpenKeyset, adLockOptimistic, adCmdTableDirect
        End With
     
     
        'Récupération des enregistrements
        For i = 0 To rsT.RecordCount - 1
             MsgBox rsT.Fields(0).Value
             rsT.MoveNext
     
        Next i
     
     
     
     
        'Fermeture de la table et de la connection
        rsT.Close
        Conn.Close
        Set rsT = Nothing
        Set Conn = Nothing
     
     
     
    End Sub

    Comment faire ?
    Des idées ?
    Merci

    Dams'

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu peux modifier ta requête en ajoutant une clause WHERE pour tous tes critères de filtre.

    Cordialement,

    PGZ

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    oui ça je connais, mais je ne souhaite pas faire comme cela... je souhaite pouvoir prendre directement les résultats filitrés

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Citation Envoyé par damsmut Voir le message
    oui ça je connais, mais je ne souhaite pas faire comme cela... je souhaite pouvoir prendre directement les résultats filitrés
    C'est un souhait ou une nécessité? Il te sert à quoi ensuite ton recordset?

    PGZ

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pourtant c'est la seule manière de faire (avec la clause Where comme te l'indique pgz) si tu veux récupérer certaines données.

    Ta connexion reconnait ta feuille dans son entier.

    L'autre solution est de passer par automation (en pilotant Excel), car il y a des méthodes pour récupérer les données issues d'un filtre.

    Philippe

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Par défaut
    oais du coup j'ai fait comme ça : copier coller des résultat filtré dans une nouvelle feuille et création du recordset à partir de là

    merci

    a+

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

Discussions similaires

  1. Créer une image à partir d'un tableau EXCEL
    Par ARobel20 dans le forum Développement Windows
    Réponses: 0
    Dernier message: 04/04/2014, 17h30
  2. Réponses: 1
    Dernier message: 03/07/2012, 07h05
  3. [XL-2007] Créer un fichiers .ics à partir d'un tableau excel adapté pour outlook
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2012, 19h14
  4. [VBA-Excel] Créer un événement à partir d'une cellule excel
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/01/2007, 11h36
  5. Réponses: 52
    Dernier message: 23/05/2006, 11h08

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