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 :

Ouvrir un fichier depuis une macro [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Par défaut Ouvrir un fichier depuis une macro
    Bonjour...

    Je travaille actuellement à la confection d'un tableau complexe et je dois aller chercher la barre d'entête dans un fichier nommé "barre.xlsx".

    La macro que j'ai enregistrée le fait très bien mais j'ai le problème suivant.

    Le code contient l'adresse "en dur" du fichier : Workbooks.Open Filename:="D:\Temp\barre.xlsx"

    Mais le tableau à confectionner et ce fichier "barre.xlsx" sont destinés à être implantés ensemble dans des répertoires portant d'autres noms.

    Comment transformer cette ligne de code pour que Excel ouvre "barre.xlsx" dans le répertoire courant, sans qu'il y ait besoin d'en donner le chemin exact ?

    J'ai essayé avec le code suivant, que j'ai trouvé sur un autre forum, mais cela ne fonctionne pas :

    chemin = ThisWorkbook.Path & "/"
    Workbooks.Open chemin & "barre.xlsx"


    Le path donné est celui du lieu de stockage de mon classeur de macros et pas celui du tableau sur lequel je travaille...

    Merci.

  2. #2
    Expert éminent 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
    Par défaut
    Dans ta macro, comment est référencé le classeur dans lequel tu travailles ?

    Si tu as bien fait les choses, il doit être référencé dans une variable de type Workbook (dès qu'on traites plusieurs classeur dans une macro, il faut référencé chacun avec ce type de variable).
    Dans ce cas, utilise cette variable à la place de ThisWorkbook.

    S'il s'agit du classeur actif, commence par mettre sa référence dans une variable parce qu'avec le Open de barre.xls, il ne va pas rester actif très longtemps.
    D'ailleurs, renvoie aussi la référence de barre.xls dans une variable au moment de l'Open.

    Bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Chemin As String
    Dim WS_Source As Workbook, WS_Dest As Workbook
     
    Set WB_Dest = ActiveWorkbook
     
    chemin = WB_Dest.Path & "/"
    Set WB_Source = Workbooks.Open chemin & "barre.xlsx"

  3. #3
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Par défaut
    Merci de la réponse.

    Je mettrai ça en œuvre demain!

    Bonne soirée.

  4. #4
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Par défaut
    C'est parfait ...

    J'ai juste corrigé deux petites erreurs dans votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim WB_Source As Workbook, WB_Dest As Workbook (et non pas WS)
     
        Set WB_Dest = ActiveWorkbook
     
        Chemin = WB_Dest.Path & "/"
        Set WB_Source = Workbooks.Open(Chemin & "barre.xlsx") <--------------- Là, il a fallu que je mette des parenthèses.
    Merci beaucoup de votre aide !!!!!!!!!!!!!!!!!!

    -------------------

    Un petit complément SVP (j'abuse !)

    N'y a t'il pas moyen de copier cette barre sans "ouvrir" le fichier ?
    Sinon (ce qui n'aurait guère d'importance) quelle est la commande pour refermer ce fichier ? (ce qui évite à l'utilisateur de voir un fichier ouvert dont il n'a pas l'utilité)
    J'avoue que je ne suis pas à l'aise avec les variables du type Workbook, Worksheet, etc....

    Merci d'avance....

  5. #5
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Par défaut
    Finalement j'ai trouvé.... et j'ai même réussi à éviter la question préalable sur le vidage du presse-papiers..

    Merci de votre aide et (sûrement) à bientôt !!!

  6. #6
    Expert éminent 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
    Par défaut
    Citation Envoyé par lovedann Voir le message
    N'y a t'il pas moyen de copier cette barre sans "ouvrir" le fichier ?
    Non.
    Même s'il y a des méthodes qui, abusivement, prétendent lire (ou écrire) dans un fichier "fermé", il ne s'agit que d'une façon différente d'ouvrir le fichier.

    quelle est la commande pour refermer ce fichier ?
    Close, tout simplement.
    Lire ça : https://docs.microsoft.com/fr-FR/off...workbook.close

    J'avoue que je ne suis pas à l'aise avec les variables du type Workbook, Worksheet, etc....
    Si tu veux parler des membres de ce type d'objet, lire ça :
    https://docs.microsoft.com/fr-FR/off...Excel.Workbook
    https://docs.microsoft.com/fr-fr/pre...ectedfrom=MSDN
    Et mets-les dans tes favoris avec l'aide des objets Range et Application.

  7. #7
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Par défaut
    OK.

    Merci pour les liens dont j'espère pouvoir faire bientôt bon usage...

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

Discussions similaires

  1. [XL-2000] Ouverture d'un fichier depuis une macro
    Par JulienTough dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/08/2011, 10h14
  2. [XL-2000] Ouvrir un fichier avec une macro excel.
    Par salent9 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2011, 12h51
  3. Réponses: 5
    Dernier message: 06/04/2010, 13h50
  4. Ouvrir un fichier depuis une applet
    Par julie4207 dans le forum Applets
    Réponses: 1
    Dernier message: 20/12/2008, 06h23
  5. Demander à l'utilisateur d'ouvrir un fichier via une macro
    Par frisou65 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/08/2008, 11h03

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