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 :

Copie feuille vers classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Copie feuille vers classeur
    Bonjour à tous,

    Je souhaite copier une feuille d'un classeur (a) vers un autre classeur (b). Le code est dans le classeur (b) et refermer le classeur (b) après. J'ai cherché sur des forums mais je n'ai pas réussi. Pouvez-vous m'aider?

    Voici mon code :

    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
    Dim MB52 As String
    Dim ZA02 As String
     
     
    MsgBox ("Sélectionner le fichier MB52")
    MB52 = Application.GetOpenFilename("")
    If MB52 <> "" Then
        MsgBox "Open " & MB52
        Else:
     
        End
    End If
     
    MsgBox ("Sélectionner le fichier ZA02")
    ZA02 = Application.GetOpenFilename("")
    If ZA02 <> "" Then
        MsgBox "Open " & ZA02
        Else:
     
        End
    End If
    Workbooks.Open MB52
    Workbooks.Open ZA02

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce Forum,

    Ouh là!

    Pour reporter un code, tu dois le baliser avec #.
    L'indentation peut être un moyen utile d'améliorer sa lisibilité.
    La procédure ici reportée n'est pas complète
    MB52 et ZA02 sont des variables mal déclarées.
    J'ai cherché sur des forums mais je n'ai pas réussi
    (.....)
    Tu peux consulter ces 2 espaces documentaires.
    Pour la copie d'une feuille de calcul, voir la méthode Copy de l'objet Worksheet
    Pour la méthode GetOPenFileName, voir l'aide sur l'espace concernant l'objet Application

    Quant au processus.
    Le code est dans le classeur (b)
    Si le code est écrit dans le classeur b, alors je ne vois pas comment l'ouvrir..
    Tu peux
    - coder dans un classeur tiers
    - affecter une variable à chaque classeur ouvert. Pour ce faire, les classeurs étant des objets, utiliser le préfixe Set
    - te servir de ces 2 variables pour une interaction entre les 2 classeurs.

  3. #3
    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 jbaudry Voir le message
    Le code est dans le classeur (b) et refermer le classeur (b) après.
    Ce type d’acrobatie est déconseillée.
    Tu fermes un fichier dont la macro est encore active. Ca revient à couper la branche sur laquelle tu es assis.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait, le code est dans le classeur B. Ce que je veux c'est que le code dans le classeur B ouvre le classeur A et récupère une feuille dedans et la copie dans le B puis referme le classeur A après.


    Citation Envoyé par MarcelG Voir le message
    Bonjour et bienvenu sur ce Forum,
    Si le code est écrit dans le classeur b, alors je ne vois pas comment l'ouvrir..
    Tu peux
    - coder dans un classeur tiers
    - affecter une variable à chaque classeur ouvert. Pour ce faire, les classeurs étant des objets, utiliser le préfixe Set
    - te servir de ces 2 variables pour une interaction entre les 2 classeurs.

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Pourquoi dans ces conditions ouvrir 2 classeurs?
    Quelque chose m'échappe.

    Active donc le classeur B et adapte le code reporté dans l'aide que je t'ai indiquée.
    Quelques exemples y figurent pour la méthode de copie d'une feuille.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Pourquoi dans ces conditions ouvrir 2 classeurs?
    Quelque chose m'échappe.

    Active donc le classeur B et adapte le code reporté dans l'aide que je t'ai indiquée.
    Quelques exemples y figurent pour la méthode de copie d'une feuille.
    En fait, je veux récupérer les feuilles de différents classeurs excel et les réunir dans un seul classeur. Et après traiter les données des différentes feuilles pour obtenir un tableau de bord. Les excels d'origines viennent d'extractions, ils sont régulièrement écrasés.

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    D'accord.
    As-tu consulté la méthode Copy dans l'aide Microsoft que je t'ai indiquée?
    Dans l'affirmative, reporte dans cette discussion le code que tu as adapté.
    Si une erreur survient lors de son exécution, précise là en indiquant le message d'erreur qui apparaît et la ligne surlignée (généralement en jaune).

  8. #8
    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 jbaudry Voir le message
    et refermer le classeur (b) après.
    Citation Envoyé par jbaudry Voir le message
    puis referme le classeur A après.
    Laquelle des versions est la bonne ?

  9. #9
    Futur Membre du Club Avatar de JClmnop
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour jbaudry,

    As-tu besoin de copier la mise en forme, commentaires et autres propriétés ou juste les données?

    Si tu veux que les valeurs, tu peux procéder ainsi (sans oublier les guillemets simples) : ActiveSheet.Range("A1") = "='C:\dossier\[fichier.xls]Feuil1'!A1"

    Évidemment, tu peux utiliser la plage de ton choix.

    L'énorme avantage avec cette méthode, c'est que tu peux lire un classeur fermé. Le désavantage, c'est que tu dois connaître la plage que tu veux importer.

    Bonne chance mec!

Discussions similaires

  1. [XL-2016] Erreur pour copier coller feuille vers classeur
    Par Eric26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/07/2018, 10h26
  2. [XL-2000] Erreur lors de la copie d'une feuille vers un autre classeur qui vient d'être créé
    Par Hankow dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/04/2015, 09h10
  3. Réponses: 1
    Dernier message: 28/01/2015, 14h39
  4. Réponses: 4
    Dernier message: 25/08/2014, 23h43
  5. Copie d'une feuille vers un autre classeur
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/10/2008, 16h08

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