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 :

ListView et données dans Classeur fermé


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 147
    Points : 56
    Points
    56
    Par défaut ListView et données dans Classeur fermé
    Bonjour a tous

    je cherche ,mais en vain, de pouvoir alimenter une ListView d'un classeur ouvert,avec
    les données qui ce trouve dans un classeur fermé
    Comment faire???,,

    Nota
    Pour une ListView dans classeur et données dans ce même classeur
    ça je sais faire
    Cordialement

  2. #2
    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
    Slt,
    je n'avais encore jamais chercher à transférer les données d'un classeur fermé, alors qui plus est dans une listview. C'était un bel exercice.
    Tout d'abord j'ai commencé par lire et étudier le tuto de silkyroad :
    http://silkyroad.developpez.com/VBA/ClasseursFermes/

    ensuite j'ai cherché a en faire une application. Pour réaliser ce que tu veux faire je créée par le code une nouvelle feuille dans le classeur de réception de donnée dans laquelle je copie la feuille qui sert de référence à ma listview
    j'insére les données dans ma listview et je supprime la nouvelle feuille

    le code ci dessous fonctionne c'est une piste à explorer pour toi

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Sub TestConnection_V1()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "D:\Classeur2.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=""Excel 8.0;HDR=NO"""
            .Open
        End With
     
        'Extended Properties=Excel 8.0 est utilisé pour les versions d'Excel 97, 2000 et 2002.
     
     
        '... la requête ...
     
    'Définit la requête.
        '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
    'insère une nouvelle feuille puis la nomme
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = "RECUP"
     
        'Ecrit le résultat de la requête dans la cellule A2
       Sheets("RECUP").Range("A2").CopyFromRecordset Rst
     
    For i = 1 To 3
    UserForm1.ListView1.ListItems(i).ListSubItems.Clear
    With UserForm1.ListView1.ListItems(i).ListSubItems
     
    'Remplissage des colonnes 2 et 3 dans la 1ere ligne etc...
            .Add , , Sheets("RECUP").Range("A" & i + 1).Value
            .Add , , Sheets("RECUP").Range("B" & i + 1).Value
    End With
    Next
     
     
       '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    Application.DisplayAlerts = False
    Sheets("RECUP").Delete
    Application.DisplayAlerts = True
     
    UserForm1.Show
     
    End Sub
    Vois comment l'adapter à ton cas.
    Merci à Silkyroad pour ces excellents tuto
    A+

    EDIT: Comme dis dans le Tuto ne pas oublier de faire ceci:
    Vous devez préalablement activer la référence Microsoft ActiveX Data Objects x.x Library pour utiliser les exemples présentés dans ce tutoriel.

    Dans l'éditeur de macros:
    Menu Outils.
    Références.
    Cochez la ligne "Microsoft ActiveX Data Objects x.x Library".
    Cliquez sur le bouton OK pour valider.

    x.x dépend de la version installée sur votre poste.


    Certains exemples proposés permettent de manipuler les tables et nécessitent d'activer la référence Microsoft ADO ext x.x for DLL and Security.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 147
    Points : 56
    Points
    56
    Par défaut
    Bonjour rvtoulon
    merci de ton aide

    Je viens d'essayer, et j'ai une erreur
    a la ligne en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=""Excel 8.0;HDR=NO"""
            .Open
        End With
    a+++++++++++++++++
    cordialement

  4. #4
    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
    Slt,
    comme je te l'ai dit dans mon précédent message ce code fonctionne parfaitement chez moi.
    J'ai suivi scrupuleusement les recommandations de Silkyroad dans son tuto dont je t'ai déjà donné le lien.
    Je t'invite donc si ce n'est déjà fait à bien lire ce tuto.
    Je n'ai pas assez d'expérience dans le travail avec des classeurs fermés pour te venir plus en aide, désolé.
    D'autres personnes ici sont beaucoup plus compétentes que moi et t'aideront certainement.

    A bientôt peut-être.

Discussions similaires

  1. récuperer des données de classeurs fermés dans un classeur
    Par peygase83 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/02/2009, 00h03
  2. ADO Excel, Supprimer Données dans Fichier Fermé
    Par vaucluseimmo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/08/2008, 19h20
  3. Données/Validation classeur fermé Distant
    Par deniooo dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 25/06/2008, 18h12
  4. Copier données vers classeur fermé
    Par andy38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2008, 23h35
  5. Aide userform( insertion données dans classeur)
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 19/12/2005, 09h16

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