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 :

Objet Range d'un fichier à l'autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut Objet Range d'un fichier à l'autre
    Bonsoir
    J'ai des data dans une feuille excel (je la vois comme une dase de connée que je complète) et je souhaite prélever des valeurs vers un autre fichier pour faire des calculs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub transfertDATA()
    ' transfertDATA Macro
    Dim etendue As Range
        Windows("Copie de CAL_BaseDATA.xls").Activate
        Set etendue = Worksheets("laBase").Range("C1:G25")
        etendue.Activate
        Selection.Copy
        Windows("Calculateur.xls").Activate
        Worksheets("INPUT").etendue.Select
        ActiveSheet.Paste
    End Sub
    Ça couince à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("INPUT").etendue.Select
    car je pige que etendu ne s'appilque pas à la feuille INPUT.
    Comment puis je faire pour que ça marche?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    Bonjour malouxa,
    tout d'abord, etandue est une plage de données qui se situe dans l'onglet "laBase".
    Donc, lorsque du demande ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("INPUT").etendue.Select
    cela signifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("INPUT").Worksheets("laBase").Range("C1:G25").Select
    Tu te retrouves donc deux fois avec des commandes d'onglet, ce qui te renvoyes une erreur.

    Donc, les pistes de solutions. Soit tu modifies etendue ou encore soit tu modifies ta demande "Worksheets("INPUT")", de manière à ce que tu n'aies qu'un seul onglet demandé.

    Cordialement,

    Étienne

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Merci pour ta réponse
    À te lire il y a implicite 2 worksheets qui se suivent

    Pour la dimension de l'étendue etendu c'est celle du jour dans le feuillet laBase et c'est variable d'un jour à l'autre, donc je doit transmettre cette valeur au feuillet de reception INPUT pour qu'il y ai le même nombre de cellules selectionnées.
    Je vois pas comment transmettre ça autrement que par une variable.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Il y a quelques points que tu pourrais préciser:
    - tu as 2 classeurs?
    - dans la même application ou 2 différentes?
    - le classeur qui contient les données (et pas le code) est ouvert comment?

    PGZ

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Bonsoir pgz,
    Pour faire simple je comptais ouvrir les 2 fichiers excel manuellement.

    Il y a 1 feuille excel par fichier,
    j'avais dans l'idée que dans un fichier excel j'ai la base de données, dans l'autre le fichier de calcul.

    Quand je lance la macro que je vous ai présenté dans le fichier de calcul, il faut que le fichier de la base (feuille laBase) soit ouvert

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Plusieurs choses.

    La première : pour lire des données dans un autre classeur, tu n'est même pas obligé de l'ouvrir. Tu peux ouvrir un recordset sur le classeur fermé.

    La deuxième : quand tu as les données (recordset ou tableau) tu peux les traiter sans les recopier sur une feuille du classeur qui contient le code.

    La troisième : ce serait plus sympa si tu veux quand même ouvrir le classeur de données, de l'ouvrir par code, car tu pourrais alors avoir une variable qui le représente à manipuler pour le lecture des données, ou leur copie.

    La quatrième : il vaut mieux ouvrir le deuxième classeur dans la même application (même fenêtre) car tu disposes dans ce cas de plus de méthodes.

    La cinquième : si tu veux copier, tu peux copier les données ou toute la feuille.

    Tout cela pour t'expliquer qu'avant d'essayer de coder il est souvent utile de perdre du temps à réfléchir à la méthode.

    Voici un exemple non vérifié d'un code qui ouvre le classeur de données dans la même application et qui copie la feuille en entier et la place en tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub subCopieFeuille()
    Dim wbk As Excel.Workbook, sh As Excel.Worksheet
    Dim sFile As String
     
    sFile = "..."'chemin complet du classuer de données
     
    Set wbk = Application.Workbooks.Add(sFile)
    wbk.Sheets("NomFeuille").Copy Application.ThisWorkbook.Sheets(1)
     
    wbk.Close False
    Set wbk = Nothing
    End Sub
    La feuille copiée porte le même nom que dans le classeur de données.

    PGZ

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/01/2008, 11h48
  2. Copy / Paste de Range d'un fichier à un autre
    Par hochimi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/07/2007, 13h15
  3. exporter des objets d'une base vers une autre
    Par RGShoop dans le forum Access
    Réponses: 3
    Dernier message: 07/09/2005, 11h52
  4. [JSP][Debutant]recuperer un objet d'une page a l'autre
    Par zozolh2 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/05/2004, 10h25
  5. Création d'un objet d'un form a l'autre
    Par Argonz dans le forum C++Builder
    Réponses: 12
    Dernier message: 03/03/2004, 10h23

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