1. #1
    Membre à l'essai Avatar de Roiser
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2017
    Messages : 10
    Points : 10
    Points
    10

    Par défaut Copier une feuille d'un classeur vers un autre

    Bonjours,

    Je suis débutant en VBA, je n'ai pas encore une bonne connaisance dessus. J'ai dû m'y mettre pour simplifier au maximum mon travail (c'est mieux quand c'est automatisé)

    Le contexte :

    Grâce à un classeur référence je peux identifier le chemin d'un second classeur où se trouve des données dont j'ai besoin. Je l'ai nommé Classeur_Source, celui-ci peut-être constitué de plusieurs feuilles, seulement une seule m'interesse.

    Voici mon problême :

    j'arrive à copier tout un classeur en utilisant : FileCopy Source, Destination

    mais je n'arrive tout simplement pas à copier la feuille de données dans un troisième classeur que j'ai appelé Classeur_Destination (qui est inexistant au passage)

    Remarque :

    Chaque classeur a un chemin spécifique
    Mon code se trouve sur le classeur réference

    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2017
    Messages : 19
    Points : 24
    Points
    24

    Par défaut

    Tu devrais essayer de faire ta manipulation avec l'enregistreur de macros.
    Ca doit te donner quelque chose d'assez simple.

  3. #3
    Membre à l'essai Avatar de Roiser
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2017
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par chth26 Voir le message
    Tu devrais essayer de faire ta manipulation avec l'enregistreur de macros.
    Ca doit te donner quelque chose d'assez simple.
    Merci, je ne connaissais pas du tout cet outil, j'ai pu bidouiller quelques chose qui marche avec le comportement que je voulais.

    Cepandant le programme ouvre des fenetres, les enregistre, les ferme, ect ... est ce qu'il existe une solution pour que le code puisse faire les mêmes actions sans toute fois ouvrir quoi que ce soit ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2017
    Messages : 19
    Points : 24
    Points
    24

    Par défaut

    Si tu peux poster le code que tu as obtenu avec l'enregistreur, on pourrait plus t'aider

  5. #5
    Membre à l'essai Avatar de Roiser
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2017
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Voici ce que j'ai obtenu, pour information la colonne 12 est un hyperlien renvoyant directement au classeur voulu (celui ci a été créé ultérieurement par un autre code)

    Si le document comporte des feuilles de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ligne.Cells(12).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    Sheets(Feuille).Select
    Sheets(Feuille).Copy
    ChDir Chemin
    ActiveWorkbook.SaveAs Filename:= Destination, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
    ActiveWindow.Close
    Si le document ne comporte pas de feuille de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks.Add
    ActiveCell.FormulaR1C1 = "Mentionné dans "
    Range("B1").Select
    ActiveCell.FormulaR1C1 = Source
    ActiveWorkbook.SaveAs Filename:=Destination, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2017
    Messages : 19
    Points : 24
    Points
    24

    Par défaut

    J'ai fait quelque chose comme ca, mais le copy ne fonctionne pas si la fenetre du classeur de destination est caché.
    Mes compétences s'arretent la ^^

    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
    Sub Macro1()
        'Ouverture fichier Source
        Dim ExcelSource As New Workbook
        Set ExcelSource = Workbooks.Open(ThisWorkbook.Worksheets(1).Range("B1"), ReadOnly:=True)
        Windows(ExcelSource.Name).Visible = False
        
        'Ouverture fichier Destination
        Dim ExcelDestination As New Workbook
        Set ExcelDestination = Workbooks.Open(ThisWorkbook.Worksheets(1).Range("B2"), ReadOnly:=False)
        Windows(ExcelDestination.Name).Visible = True
        
        'Copie du classeur
        ExcelSource.Sheets(1).Copy After:=ExcelDestination.Sheets(ExcelDestination.Sheets.Count)
    
        'Fermeture et enregistrement
        ExcelSource.Close SaveChanges:=False
        ExcelDestination.Close SaveChanges:=True
    End Sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/12/2016, 11h49
  2. [XL-2013] copier les feuilles d'un classeur vers un autre classeur créé
    Par Doola dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2016, 10h08
  3. [XL-2010] Copie d'une feuille d'un classeur vers un autre classeur e
    Par CnamExcel dans le forum Excel
    Réponses: 2
    Dernier message: 30/12/2015, 11h28
  4. Réponses: 5
    Dernier message: 15/07/2013, 10h32
  5. je veu copier une feuille d'un classeur et il affiche erreur 424
    Par booskap dans le forum Macros et VBA Excel
    Réponses: 58
    Dernier message: 26/07/2007, 09h31

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