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

Excel Discussion :

Code VBA: Récupérer des données d'un autre classeur


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut Code VBA: Récupérer des données d'un autre classeur
    Bonjour,
    J’aimerais sous vba, récupérer des informations d’un autre classeur avec plusieurs conditions et plusieurs résultats.
    Exemple : j’ai le compte 626200 à chercher du DAF dans un autre classeur. J’aimerais récupérer les montants de ces 2 conditions.
    Avez-vous la solution?

    Cordialement.

  2. #2
    Membre actif Avatar de Pellouaille
    Homme Profil pro
    STF (Sans Travail Fixe)
    Inscrit en
    Novembre 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : STF (Sans Travail Fixe)
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 89
    Points : 204
    Points
    204
    Par défaut
    Hello fab-56,

    En copiant collant ton titre dans google et en ajoutant le super mot clé 'Developpez', je suis tombé la-dessus:

    http://www.developpez.net/forums/d12...ure-fermeture/

    Sans doute quelques réponses à tes questions.

    Une fois le fichier ouvert, tu peux rechercher l'info dont tu as besoin puis copier/coller vers ton premier classeur.

    Cordialement,

    Pellouaille
    "Va lentement, tu iras plus loin."

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Bonjour Pellouaille,

    Merci pour ton aide !!!

  4. #4
    Membre du Club Avatar de Logisticien
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Mars 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    bonjour;

    voici un code qui pourra utile 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
    Sub RequeteClasseurFerme_Excel2007()
        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 = "\\Lien de votre Fichier.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "NOm de Feuil"
     
        Set Cn = New ADODB.Connection
     
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
     
            '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)
     
        'Ecrit le résultat de la requête dans la cellule que vous voulez
        Range("Définir Cellule").CopyFromRecordset Rst
     
        '
        '... la requête ...
        '
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    End Sub

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Passer par du OLEDB pour récupérer les données d'un autre classeur Excel, c'est un peu comme passer la le trou du cul pour opérer des amygdales.

    J’aimerais sous vba, récupérer des informations d’un autre classeur avec plusieurs conditions et plusieurs résultats.
    Exemple : j’ai le compte 626200 à chercher du DAF dans un autre classeur. J’aimerais récupérer les montants de ces 2 conditions.
    Avec des information aussi floues et peu précises, pas facile d'apporter une solution utilisable...

    Essaye d'adapter ça :
    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
    Dim WSSource As Worksheet, WSDest As Worksheet
    Dim LigS As Long, LigD As Long
     
    Set WSDest = ActiveSheet
    LigD = 1 + WSDest.Cells(Rows.Count, 1).End(xlUp).Row
     
    Workbooks.Open "C:\MonRépertoire\MonClasseur.xls"
    Set WSSource = ActiveSheet
     
    For LigS = 1 To WSSource.Cells(Rows.Count, 1).End(xlUp).Row
        If WSSource.Cells(LigS, 1) = "MaCondition" Then 
            WSSource.Rows(LigS).Copy WSDest.Rows(LigD)
            LigD = LigD + 1
        End If
    Next LigS
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    Merci pour vos réponses. C’est vrai que c’est assez flou ce que je veux. En gros j’aimerais récupérer des informations d’un autre classeur et que sur la même ligne il y a la condition que je cherche. Enfin de retranscrire ces informations sur mon classeur actif.
    EX : condition : DAF
    Information à récupérer : le montant
    Sur le classeur : service montant
    DAF 56
    DMC 345
    DAF 651
    ETC …
    J’ai essayé de m’adapter à vos réponses, mais sans succès.
    Cordialement

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par fab-56 Voir le message
    En gros j’aimerais récupérer des informations d’un autre classeur et que sur la même ligne il y a la condition que je cherche. Enfin de retranscrire ces informations sur mon classeur actif.
    Désolé mais c'est toujours aussi flou.
    Si tu faisais des copies d'écran de tes données sources et du résultat que tu veux obtenir, ce serait peut-être plus clair.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    c'est en pièce jointe !
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    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
    Dim WSSource As Worksheet, WSDest As Worksheet
    Dim LigS As Long, LigD As Long
     
    Set WSDest = ActiveSheet
    LigD = 1 + WSDest.Cells(Rows.Count, 1).End(xlUp).Row
     
    Workbooks.Open "C:\MonRépertoire\MonClasseur.xls"
    Set WSSource = ActiveSheet
     
    For LigS = 3 To WSSource.Cells(Rows.Count, 1).End(xlUp).Row
        If WSSource.Cells(LigS, 2) = "DAF0101" Then 
            WSDest.Cells(LigD,1).Value = WSSource.Cells(LigS,4).Value
            LigD = LigD + 1
        End If
    Next LigS
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Merci !! La fonction apparemment tourne bien mais impossible de voir les montants sur le classeur !

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    C'est bon !! Merci beaucoup !!!!

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Je reviens vers vous, car j'ai constaté un problème, si je devais relancer la macro les montants déjà constatés reviennent sur les lignes plus bas. Est ce possible de le faire en format if ... then ?
    Cordialement,

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ecoute, au lieu d'envoyer tes spécifications au compte-gouttes, essaye une bonne fois pour toute de bien expliquer ton besoin clairement et en détail, et pas simplement par un exemple. Parce que là, ça commence à être agaçant.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. [XL-2010] Générer un reporting Word via un code VBA et des données Excel
    Par scaredof dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/12/2013, 16h35
  2. [MySQL] [Newbie] Récupérer des données d'une autre base ?
    Par Mister Paul dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/11/2009, 12h08
  3. récupérer des données d'une autre page
    Par info3licen dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2009, 19h56
  4. Débutant récupérer des données d'un autre programme
    Par yodark dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 03/01/2008, 15h26
  5. Récupérer des données depuis un autre site
    Par cchampion2fr dans le forum Langage
    Réponses: 31
    Dernier message: 30/10/2006, 10h05

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