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 une valeur d'un autre fichier excel fermé via macro vba [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut Récupérer une valeur d'un autre fichier excel fermé via macro vba
    bonjour à vous,

    je souhaite dans un fichier, que j'ai créé et qui fonctionne tres bien, grâce à vos aides et conseils, faire un fichier de synthèse, dans un fichier excel.
    Voici le contexte :

    j'ai un fichier excel dans un dossier specifique, qui ne bougera pas , par exemple, dans "d:\mondossier\monfichier1.xlsm".

    dans ce fichier, j'ai 3 onglets :
    Nom : onglet2.JPG
Affichages : 254
Taille : 36,2 KoNom : onglet1.JPG
Affichages : 233
Taille : 23,6 Ko

    j'ai créé un autre fichier excel que j'ai appelé "fichier de synthese" dans lequel je souhaite voir les résultats qui se mettent à jour automatiquement, en fonction de la mise à jour des valeurs, dans chaque onglets, du premier fichier. Aussi j'aimerais qu'ils se mettent à jour, même si le fichier est fermé.

    Pour cela, j'ai vu un site disant que par formule c'etait impossible, mais par macro c'est "possible", mais j'ai du mal à comprendre.

    j'ai essayé d'arranger ce code, pour l'utiliser mais j'ai du mal à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub ImporterDonneesSansOuvrir()
    Dim Cheminsource As String, Fichiersource As String
     
        Cheminsource = "d:\mondossier\"
        Fichiersource = "monfichier1.xlsm"
     
        ThisWorkbook.Names.Add "plage", _
                RefersTo:="='" & Cheminsource & "[" & Fichiersource & "]anomalie 1'!$D4"  'je prend la valeur d4 , de la feuille anomalie 1
     
            Worksheets("Feuil2").Range("D4").Value = "=plage"  '??  
    End Sub
    en fait si je comprend bien c'est une procedure permettant de prendre la valeur du fichier "mon fichier1" et je veux que la valeur de la feuille "anomalie 1" en d4 s'affiche dans mon fichire de synthese :
    Nom : synthese.png
Affichages : 294
Taille : 105,3 Ko

    et ceux meme si le fichier est fermé, c'est à dire si je consulte le fichire de synthese pour voir l'avancement, je vois les chiffres qui sont des mes autres fichiers.

    Merci beaucoup pour votre aide.
    Cordialement

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    le principe consiste à aller ouvrir le dossier fermer
    récupérer la valeur de la cellule A1 de chaque onglet et l'enregistrer A1 dans le classeur ouvert
    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
    Sub test()
    Dim wkA As Workbook, wkB As Workbook
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    Set wkA = ThisWorkbook 'ton dossier ouvert class1
    Workbooks.Open "C:\Users\DELL\Desktop\Class2.xlsm"  ' aller ouvrir l'onglet
    Set wkB = ActiveWorkbook ' la classeur ouvert prends le nom WkB
    X = 0
    For Each Sh In wkB.Sheets
    X = X + Sh.Range("A1")
    Next Sh
    wkA.Sheets("feuille1").Range("A1").Value = X
    wkB.Close True 'fermer le classeur
    Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    bonjour,
    merci beaucoup.

    J'ai fais quelques tests et j'aurais une question:
    j'ai créé un bouton pour mettre à jour les chiffres et je me suis rendu compte qu'il me créé plusieurs onglets dans le mode developpeur, à chaque fois que je clique sur le bouton, afin de mettre à jour le chiffre, est ce normal ?

    Nom : onglet.JPG
Affichages : 203
Taille : 11,7 Ko

    merci bien

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    normalement ça viens d'autre chose
    le code fait simplement aller ouvrir le classeur récupérer la valeur de chaque onglet ; enregistre l'information et ferme le classeur
    personnellement je doute que ça vient d'un autre code
    pour s'assurer fait un test avec simplement ce code et deux classeurs test

  5. #5
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    bonjour,
    j'ai fais un debogage, cela provient de ce morceau de code :

    Nom : test.JPG
Affichages : 195
Taille : 17,6 Ko

    J'ai tenté de faire un "close" :
    Workbooks.Close "C:\xxxx\xxxxx\Documents\xxxxx\test\test.xlsm" ' aller ouvrir l'onglet

    mais il me met une erreur

    Nom : erreur.JPG
Affichages : 200
Taille : 17,4 Ko

    Nom : erreur2.JPG
Affichages : 199
Taille : 18,5 Ko

    si je met en commentaire le ".close" , il me remet toujours plusieurs onglets quand j'execute la macro.
    Nom : ongletsupp.JPG
Affichages : 193
Taille : 13,5 Ko


    Donc si j'ai bien compris, plusieurs onglets apparaissent, quand j'execute la macro, quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Workbooks.Open "C:\Users\cxxxxx\xxxxx\xxxxx\test\test.xlsm"  ' aller ouvrir l'onglet
    mais ce qui est bizarre c'est qu'a la fait je fais bien cela :

    wkB.Close True 'fermer le classeur

    Voici mon code en entier :

    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
     
    Sub test()
        Dim wkA As Workbook, wkB As Workbook
        Dim Sh As Worksheet
     
        Application.ScreenUpdating = False
        Set wkA = ThisWorkbook 'ton dossier ouvert class1
        Workbooks.Open "C:\cxxxxx\xxxxxx\xxxxxx\xxxxxx\test\test.xlsm"  ' aller ouvrir l'onglet
     
        Set wkB = ActiveWorkbook ' la classeur ouvert prends le nom WkB
        X = 0
        y = 0
        Z = 0
        a = 0
        b = 0
        c = 0
        d = 0
        e = 0
        f = 0
     
     
        For Each Sh In wkB.Sheets
         X = X + Sh.Range("G10")
         y = y + Sh.Range("G11")
         Z = Z + Sh.Range("G12")
         a = a + Sh.Range("G13")
         b = b + Sh.Range("G14")
         c = c + Sh.Range("G15")
         d = d + Sh.Range("G16")
         e = e + Sh.Range("G17")
         f = f + Sh.Range("G18")
     
        Next Sh
     
        'j'affiche dans un tableau les valeurs provenant d'un autres fichier, les valeurs se mettent bien à jour.
        wkA.Sheets("anomalie 1").Range("I4").Value = X
        wkA.Sheets("anomalie 1").Range("I5").Value = y
        wkA.Sheets("anomalie 1").Range("I6").Value = Z
        wkA.Sheets("anomalie 1").Range("I7").Value = a
        wkA.Sheets("anomalie 1").Range("I8").Value = b
        wkA.Sheets("anomalie 1").Range("I9").Value = c
        wkA.Sheets("anomalie 1").Range("I10").Value = d
        wkA.Sheets("anomalie 1").Range("I11").Value = e
        wkA.Sheets("anomalie 1").Range("I12").Value = f
     
        wkB.Close True 'fermer le classeur
        '  Workbooks.Close "C:\xxxxx\xxxxx\xxxxx\xxxxxx\test\test.xlsm"  ' aller ouvrir l'onglet
        Application.ScreenUpdating = True
    End Sub
     
    merci beaucoup

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\cxxxxx\xxxxxx\xxxxxx\xxxxxx\test\test.xlsm"  ' aller ouvrir l'onglet
    est ce que tu as un classeur Excel nommé test sous un répertoire nommé test aussi?
    si non pas besoin d'avoir deux fois test !! le code ouvre un classeur et non pas un onglet

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

Discussions similaires

  1. [XL-2016] Problème pour récupérer la valeur d'un autre fichier Excel
    Par zoom61 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2021, 15h32
  2. Recherche d'une valeur dans un autre fichier excel
    Par Seb_33 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/02/2017, 19h21
  3. [XL-2010] combobox avec le contenu d'une plage d'un autre fichier Excel fermé
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/05/2015, 22h06
  4. Récupérer des valeurs dans un autre fichier excel fermé
    Par dominiqued dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/05/2014, 12h07
  5. [Toutes versions] Formule pour recuperer une valeur sur un autre fichier Excel
    Par bonilla dans le forum Excel
    Réponses: 2
    Dernier message: 26/06/2012, 11h19

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