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 :

Copier feuilles vers un autre fichier [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut Copier feuilles vers un autre fichier
    Bonjour,

    Voici ce que j'aimerais pouvoir faire:

    J'ai un fichier source qui contient 10 feuilles et j'aimerais copier (régulièrement) uniquement 3 de ces feuilles vers un fichier de destination qui existe déjà (donc écraser le contenu des 3 feuilles existantes)

    J'ai essayé quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ThisWorkbook.Sheets("Sheet1").Copy
    ActiveWorkbook.SaveAs "D:\Book2.xlsx", FileFormat:=51
    Mais je voudrais copier plusieurs feuilles.

    Merci pour vos lumières.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Possibilité 1 : delete les feuilles préexistantes et après sheets(array(1,2)).copy workbooks(machin).sheets(truc).
    Possibilité 2 : sheets(dest).usedrange.delete, puis en boucle sheets(orig).usedrange.copy : sheets(dest).pastespecial

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    La possibilité 1 me convient.

    Comment fait-on si les feuilles à copier ne se suivent pas dans le fichier d'origine?

    Par ex: J'ai besoin de la Feuille4, la feuille7 et la feuille9

    Ceci fonctionnerait?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(array(4,7,9)).copy workbooks(Book2).sheets(Feuille1)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Bah tu mets array("Feuil1","Feuil5") etc... Les numéros ou les noms
    Et oui ça marcherait (avec les "")

    NB: sheets(6) n'est pas forcément sheets("Feuil6").

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    En codant ceci, j'obtiens une run-time error (object required):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Sample()
        Sheets(Array("2", "4", "5")).Copy Workbooks(Book2.xlsx).Sheets(1)
    End Sub
    Merci

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    "1" c'est si la feuille se nomme "1"
    1 c'est si c'est la première feuille

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Merci pour la précision mais comment se fait-il que j'ai toujours un message d'erreur en codant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Sample()
        Sheets(Array("2", "4", "5")).Copy Workbooks("Book2.xlsx").Sheets(1)
    End Sub
    Je suis censé prendre les feuilles nommées 2, 4 et 5 et à partir de la 1ère feuille du tableur book2.xlsx, ce n'est pas ça?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Tu as des feuilles nommées "2","4" et "5"? J'ai testé sur mon poste, ca fonctionne nickel. Si c'est "Feuille1", mets bien "Feuille1"
    NB : le workbook de référence est le workbook actif. Si c'est un autre rajoute un workbooks(machin) devant.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Nom : Capture.JPG
Affichages : 215
Taille : 75,1 Ko

    Voici un screenshot

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Essaye avec un
    thisworkbook.
    devant. C'est bizarre, il ne trouve pas une des feuilles. L'autre workbook est ouvert? Et le workbook actif était le bon?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Nom : Capture.JPG
Affichages : 194
Taille : 72,9 Ko

    Oui, c'est bizarre car l'autre workbook n'est pas ouvert et celui actif est le bon

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Donc tu colles dans un workbook non ouvert et tu te demandes pourquoi il ne trouve plus où tu pointes?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    En effet, ça marche beaucoup mieux quand le fichier est ouvert

    Le hic, c'est que j'aimerais qu'il écrase la feuille existante dans le fichier de destination à chaque copie et pas qu'il en crée une nouvelle du genre "Feuille2 (2)"

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Possibilité 1 : delete les feuilles préexistantes et après sheets(array(1,2)).copy workbooks(machin).sheets(truc).
    supprime les toi même

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut


    sheets(dest).usedrange.delete, puis en boucle sheets(orig).usedrange.copy : sheets(dest).pastespecial

    dest = Fichier ou feuille de destination?
    usedrange = l'ordre des feuilles?
    orig = Fichier ou feuille d'origine?

    Merciiiiiiiiiiiiiiiiiiiiiiiiiii

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Pour ton cas il te manque plus qu'un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Book2.xlsx").Sheets(Array("2", "4", "5")).delete


    Les deux: workbooks(fichier destination).sheets(le nom de la feuille).

    usedrange c'est le range dans une feuille qui est utilisé. Oublie, tu prends la solution 1.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    En effet, ça marche nickel mais il y a une confirmation de suppression qui est affichée.

    N'y a-t-il pas moyen de supprimer cette confirmation?

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.displayalerts=false
    ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.displayalerts=true

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Top!

    Une autre question me turlupine:

    Si je veux faire ça de manière automatique (sans ouvrir les fichiers au préalable), comment pourrais-je le faire?

    T'es un crack! Merci!

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Humoriste raté
    Inscrit en
    Janvier 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Humoriste raté

    Informations forums :
    Inscription : Janvier 2015
    Messages : 21
    Points : 29
    Points
    29
    Par défaut
    Impossible. Par contre tu peux les ouvrir et les fermer via VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set WB=workbooks.open(path)
    WB.sheets().copy etc...
    WB.close

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Copie automatique de certaines feuilles vers un autre fichier
    Par fra7878 dans le forum Excel
    Réponses: 10
    Dernier message: 20/01/2015, 16h15
  2. [XL-2003] Copier feuille dans un autre fichier sans liaison
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/02/2012, 09h51
  3. Syntaxe Copier/coller vers un autre fichier dans VBA.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/01/2009, 10h49
  4. copier une feuille excel vers un autre fichier excel en access VBA
    Par acbdev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/03/2008, 09h32
  5. [VBA-Excel] Déplacement d'une feuille vers un autre fichier
    Par Olivier95 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2006, 11h17

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