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 :

[VBA-E] Pointer sur un autre fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [VBA-E] Pointer sur un autre fichier Excel
    Bonjour,

    Il y a une petite formule, qui ne doit pas être bien compliquée, mais que je n'arrive pas à concevoir.
    Je vous explique:

    J'ai 2 fichiers: machin.xls et bidule.xls (avec un onglet 'Truc').

    Dans le fichier 'machin.xls', j'ai une cellule (A1) qui contient le nom du 2ème fichier excel (donc elle contient: 'bidule.xls').
    Dans la cellule à coté (A2), il faut que j'aille chercher la valeur en B5 dans l'onglet 'Truc' se trouvant dans le fichier indiqué dans A1.

    Le problème s'est que je n'arrive pas à écrire cette formule. J'ai réussi mais seulement si le fichier 'bidule.xls' est ouvert et quand il est fermé, la valeur ne peut plus être récupéré.

    Et bien sur, le lien ne peut pas être écrit en "dur" car le nom du fichier dans lequel je dois aller chercher la valeur n'est connu qu'à partir de la valeur A1 du fichier 'bidule.xls'.

    Avez-vous une idée ?

    En espérant avoir été assez clair, je vous remercie d'avance de la moindre petit aide que vous pourrez m'apporter.

    PS: Je sais très bien qu'ici on parle de VBA, mais je préférerai faire ça par une simple formule plutôt que par macro. Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    A ma connaissance, il n'est pas possible d'utiliser la fonction Indirect dans une formule de liaison, vers un classeur fermé: Tu devras donc utiliser une macro.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Lecture de la cellule A1 dans la Feuil1 du classeur fermé			
    MsgBox ExecuteExcel4Macro("'C:\dossier\[NomClasseur.xls]Feuil1'!R1C1")


    michel

  3. #3
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse

    Effectivement c'est la fonction Indirect que j'avais essayé d'utiliser mais une fois le classeur fermé, la liaison entre les classeurs ne se fait plus.

    Il n'y a vraiment pas d'autres solutions pour ne pas devoir passer par une macro ?

  4. #4
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Je me suis décidé, après pas mal d'essaies non concluant par le biais des formules, de passer par la fonction "ExecuteExcel4Macro" en passant par une macro.

    Maintenant je n'arrive pas à associer cette valeur obtenue avec "ExecuteExcel4Macro" à une cellule.
    Enfin si j'y suis parvenu mais en fait ce que je voudrai arriver à obtenir, c'est quand appelant une fonction macro à partir d'une cellule, qu'excel me place la valeur dans cette dite cellule.

    Du style je mets en A1 la formule du style "=appelfonctionmacro" et le résultat généré par cette fonction se mettra dans la cellule qui a appelé cette fonction.

    En espérant avoir été assez clair, je vous souhaite une bonne journée.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le problème n'est que l'écriture de ta fonction. Un exemple :
    Dans la fonction je multiplie la valeur contenue dans A1 par 10 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function appelfonctionmacro(Adresse)
    If Range(Adresse).Value <> 0 Then
        appelfonctionmacro = Range(Adresse) * 10
    End If
    End Function
    Dans A1, j'ai mis une valeur
    La formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =appelfonctionmacro("A1")
    Tu dis
    A+

    NB - La formule est placée n'importe où dans ta feuille

  6. #6
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse

    Et y'a-t-il une possibilité pour que l'on ne soit pas obligé de lui préciser l'adresse ?
    Une sorte de fonction en VBA qui puisse trouver l'adresse de la cellule en fonction de l'appel de la macro ?

    Encore une fois merci d'avance.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Une sorte de fonction en VBA qui puisse trouver l'adresse de la cellule en fonction de l'appel de la macro ?
    je ne comprend pas cette phrase.

    Peux repréciser ta demande?



    bonne soirée
    michel

  8. #8
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Oui par exemple je veux dire que si j'appelle la fonction macro à partir de la cellule "A1" par exemple, que je ne sois pas obligé de préciser "A1" (comme dans =appelfonctionmacro("A1")) mais qu'à l'intérieur de la macro, il détecte que la macro a été lancée à partir de "A1".

    En espérant avoir été un peu plus clair.

    Merci

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je ne pense pas, et c'est logique. Tu demanderais à Excel de te donner le résultat d'une fonction exécutant une macro (ou d'exécuter du code de recherche) en permanence... Je crois qu'on rêve...
    Mais attends d'avoir confirmation, sait-on jamais la solution qu'un bbil ou un silkyroad va te pondre
    Je ne quitte pas...

  10. #10
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Re bonsoir,

    J'espère ne pas trop vous ennuyer avec mes problèmes mais là je me heurte de nouveau à quelques difficultés.

    Si j'appelle une macro, à partir d'une cellule, qui contient la fonction 'ExecuteExcel4Macro', cela ne fonctionne pas.
    Pourtant la fonction est bonne mais on dirait que le fait que ça soit une formule excel qui demande d'exécuter la fonction 'ExecuteExcel4Macro', ça bug.

    Y'aurait-il une solution ?

    Merci d'avance

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    dans ce cas tu peux tester cette autre méthode

    http://silkyroad.developpez.com/VBA/ClasseursFermes/


    michel

Discussions similaires

  1. [XL-2010] Appliquer Macro sur un autre fichier Excel
    Par Rageo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/05/2014, 22h26
  2. Copier un onglet sur un autre fichier excel
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/10/2013, 11h22
  3. Copier onglet sur un autre fichier excel
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/09/2013, 16h42
  4. [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
  5. [XL-2007] se positionner sur un autre fichier excel
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 14/03/2012, 11h58

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