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 :

[VBA-E] Copie par valeur d'une feuille dans un nouveau classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Bonjour

    J'ai un classeur dans lequel j'applique ma macro
    je veux copier par valeur une feuille de ce classeur (nommée "Indicateurs_données") et coller cette feuille dans un classeur nouvellement crée nommée "test.xls"

    j'ai le code suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub Resultat()
        ActiveWordbook.Sheets("Indicateurs_données").Copy
        ActiveWorkbook.SaveAs ThisWorkbook.Path & "\test.xls"
    End Sub
    et l'erreur 424 "objet requis"... je ne comprends pas

    merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    ActiveWorkbook est le classeur courant.

    Je te conseille de faire comme suit:

    1. Créer un nouveau claseur, et l'ouvrir.
    2. Dans les parametres du Active Workbook.copy tu peux donner la destination en parametre. Destination = nouveau classeur créé
    3. Fermer le nouveau.
    N'oubliez pas de mettre le

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Allé un coup de pouce je suis dans un bon jour...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim nWkbk As New Workbook
        Set nWkbk = Workbooks.Add
     
        ActiveWorkbook.Sheets("Indicateurs_données").Copy , nWkbk.Sheets("Feuil3")
        nWkbk.SaveAs Filename:="c:\test.xls", FileFormat:= _
            xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
            , CreateBackup:=False
        nWkbk.Close
    N'oubliez pas de mettre le

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comme tu sembles ne vouloir copier que les valeurs, tu fais ce que Vesta t'a indiqué, puis tu copies la feuille en précisant valeurs seulement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        'Tu es dans le classeur contenant la macro...
        '...sur la feuille contenant les données à copier
        Range("A1").CurrentRegion.Copy
        With Application
            .Workbooks.Add
        End With
        Worksheets("Feuil1").Select
        Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    mais je lutte à mort là alors que c'est trop naze ce que je veux faire

    - créer un fichier qui porte le nom de l'ancien + qq caractères
    - mettre dans ce fichier la première feuille en copie par valeur...

    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
    Sub Resultante()
        Dim NomFichier As String
        Dim Path As String
        Dim NouveauClasseur As Workbook
     
     
        NomFichier = ActiveWorkbook.Name
        Path = ActiveWorkbook.Path
        ActiveWorkbook.Sheets("Indicateurs_données").Copy
     
        Workbooks.Add
     
        'Créer un fichier
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        ActiveWorkbook.SaveAs Path & "\Valeurs_" & NomFichier & ".xls"
    End Sub
    merci

    modif: j'avais pas vu vos deux dernières réponses... mais je suis dans le brouillard la... le premier code que j'avais mis était quasiement bon au détail pres qu'il copiait tout simplement au lieu de copier par valeur....

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je crois que tu as la réponse dans mon dernier post

    Tu dis

    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    c'est pas un truc tiré par les cheveux ? moi je veux absolument pas touché au classeur 1... disons d'ailleurs que je n'ai que le droit en lecture dessus !

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tiré par les cheveux ? Tiré par les cheveux ?
    Je t'en donnerai, moi !
    Non, ça fonctionne. Le seul pb est avec currentRegion. Il prend toutes les lignes et colonnes mais la plage ne doit comporter aucune ligne ni aucune colonne entièrement vide. Sinon la plage copiée se limite aux lignes et colonnes renseignées entre lignes et/ou colonnes vide
    Si tu te places en A1 mais que la ligne 10 est vide, la sélection se fera sur les lignes 1 à 9
    Idem pour les colonnes
    Si tu te places en B1 mais que la colonne N est entièrement vide, la sélection se fera de A (si la colonne est renseignée) à M.
    Si tel n'est pas le cas (si tu as des colonnes ou lignes entièrement vides dans ta plage) tu dis, il y a d'autres méthodes

    Non mais ! Tiré par les cheveux ! T'as voir !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 65
    Points
    65
    Par défaut
    snif snif... fais pas peur...

    bon j'ai fait une autre feinte de charognard basée sur la copie sur elle meme de la sélection mais dans le fichier résultat (et non source, puisque je peux pas modifier)

    globalement j'ai ca

    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
    Sub Valeurs_pour_publication()
        Dim NomFichier As String
        Dim Path As String
        Dim DateFichier As String
     
     
        NomFichier = ActiveWorkbook.Name
        Path = ActiveWorkbook.Path
        DateFichier = ActiveWorkbook.Worksheets("Indicateurs_données").Range("A1")
        ActiveWorkbook.Sheets("Indicateurs_données").Copy
        Cells.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A1").Value = DateFichier
        ActiveWorkbook.SaveAs Path & "\Valeurs_" & NomFichier & ".xls"
    End Sub

    merci encore et pas frappé ! steuplé !!

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Un peu lourd ton histoire... 65535 lignes et 256 colonnes copiées, t'as pas intérêt à le faire en boucle...
    ma solution était plus économique. Cependant tu commets une erreur : Elle ne collait pas sur le fichier d'origine mais sur le fichier créé sur lequel tu te trouves automatiquement dés lors que tu l'as créé... Faut apprendre à lire !

    A+

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par MatMeuh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub Resultat()
        ActiveWordbook.Sheets("Indicateurs_données").Copy
        ActiveWorkbook.SaveAs ThisWorkbook.Path & "\test.xls"
    End Sub
    Voilà ce qui se passe quand on n'a pas une bonne orthographe
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. [XL-2003] Copie d'une feuille dans un nouveau classeur
    Par magikmed dans le forum Excel
    Réponses: 5
    Dernier message: 20/02/2015, 10h45
  3. [XL-2010] Copier une feuille dans un nouveau classeur
    Par Rob's dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/12/2013, 16h16
  4. [XL-2003] Macro pour copie de valeurs d'une feuille dans une autre
    Par lili189 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2012, 08h25
  5. [XL-2007] Insérer une feuille dans un nouveau classeur
    Par MANOU06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/02/2011, 20h32

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