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

Excel Discussion :

enregistrer nouveau classeur [XL-2010]


Sujet :

Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut enregistrer nouveau classeur
    Bonjour à tous,

    Je copie quatre feuilles de graphique "Graph1", "Graph2" , "Graph3" et "Graph4" dans un nouveau classeur, j'aimerai que l'utilisateur puisse enregistrer ce nouveau classeur et choisir le nom. Le problème c'est qu'avec "Application.GetSaveAsFilename" rien ne se passe ... je ne comprends pas bien, y a quelque chose que je dois mal saisir :/

    Aussi dans mon nouveau classeur les feuilles se placent derrière la Feuil1 (comme indiqué dans le code), mais je voudrais supprimer cette feuille pour ne garder que les graphiques mais ça ne marche pas...

    Quelqu'un voit le problème ? en vous remerciant !

    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
     
     
    Sub CopierPlusieursFeuillesDunClasseurDansLautre()
     
        Dim Feuilles(1 To 4)
     
        Feuilles(1) = "Graph1"
        Feuilles(2) = "Graph2"
        Feuilles(3) = "Graph3"
        Feuilles(4) = "Graph4"
     
        FichierOùCopier = ActiveWorkbook.Name
        Application.Workbooks.Add
        FichierOùColler = ActiveWorkbook.Name
        Workbooks(FichierOùCopier).Activate
        Sheets(Feuilles).Select
        Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)
     
        Workbooks(FichierOùColler).Sheets("Feuil1").Delete 'ne marche pas
     
       Application.GetSaveAsFilename 'ne fais rien
     
    End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Bonjour,,
    Je pense que tu dois supprimer ton second:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierOùColler = ActiveWorkbook.Name
    Et regarde ce sujet pour sauvegarder ton classeur:
    http://www.developpez.net/forums/d11...egistrer-sous/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut
    Je ne peux pas pq sinon je n'ai plus le nom du classeur où je dois copier :/
    Le premier contient le nom du classeur où je dois copier et le deuxième le nom du classeur où je dois coller

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Autant pour moi, tu as raison...

    Vu que tu copies tes onglets dans "FichierOùColler", il doit être actif.
    Si "Workbooks(FichierOùColler).Sheets("Feuil1").Delete" ne marche pas, c'est peut-être parce-que ton nom de feuille n'est pas bon...

    Vu que "Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)" a fonctionné, tu peux essayer de passer par l'index de la feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(FichierOùColler).Worksheets(1).Delete
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    les données permettant de créer ces graphiques (qui semblent-ils occupent chacun une feuilles) restent sur le classeur d'origine ?

    cela risque de posé des problèmes a mon avis

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    @Igloobel: pour ma part, je me suis dit qu'elles étaient dans les onglets recopiés...Si ce n'est pas le cas, c'est clair qu'il va y avoir un problème !
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Je reprends votre code d'origine avec quelques commentaires insérés comme 'VB Blabla

    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
    24
    25
    26
    27
    Sub CopierPlusieursFeuillesDunClasseurDansLautre()
     
        Dim Feuilles(1 To 4)
     
        Feuilles(1) = "Graph1"  'VB Si c'est toutes les feuilles commençant par Graph, c'est compactable
        Feuilles(2) = "Graph2"
        Feuilles(3) = "Graph3"
        Feuilles(4) = "Graph4"
     
    'VB Où est le parcours des feuilles(1 -> 4)?
        FichierOùCopier = ActiveWorkbook.Name 'VB Attention, le workbook actif change après, plutot ThisWorkbook
        Application.Workbooks.Add
        FichierOùColler = ActiveWorkbook.Name
        Workbooks(FichierOùCopier).Activate
        Sheets(Feuilles).Select
        Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)
     
        Workbooks(FichierOùColler).Sheets("Feuil1").Delete 'ne marche pas    'VB  .Sheets(1) ... mais ça dépend des options excel du nombre de feuilles à la création
     
       Application.GetSaveAsFilename 'ne fais rien
     
    'VB Voir quelquechose comme
    Do
        fName = Application.GetSaveAsFilename
    Loop Until fName <> False
    Workbooks(FichierOùColler).SaveAs Filename:=fName
    End Sub
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut
    Merci GastonLagaffe25, la suppression de la Feuil1 fonctionne bien Par contre ça ne marche toujours pas pour l'enregistrement :/

    Igloobel, voici ce que j'essaie de faire:

    Dans un classeur A je créé 4 graphiques dans quatre feuilles différentes (ça marche jusque là). Cependant dans ce classeur A j'ai pleins d'autres onglets divers.. En cliquant sur un bouton, je souhaite donc exporter ces 4 graphiques dans un autre classeur B puis les supprimer ensuite de mon classeur A. Je voudrais alors qu'en cliquant sur le bouton, une fenêtre d'enregistrement apparaisse afin que l'utilisateur puisse choisir le nom et l'endroit où il souhaite conserver ce classeur B avec tous les graphiques.. Enfin voilà dans l'idée mais dans la réalisation j'ai plus de difficultés Peut être qu'il y a plus simple comme méthode ?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    .... heeuuu .... et où vont être les données d'entrées des graphes à la fin? Sur le classeur A?
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Pour enregistrer, pourquoi n'utilises tu pas Application.FileDialog(xlDialogSaveAs) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With Application.FileDialog(2) 'ou xlDialogSaveAs
            .InitialFileName = Nom
            .Show
    End with
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut
    Oui les données d'entrée seront sur le classeur A. Je souhaite juste pouvoir faire une sauvegarde des graphiques uniquement dans un autre classeur B. Par contre les graphiques ne sont pas modifiables après c'est vrai.. Mais ce n'est pas grave car depuis mon classeur A je peux relancer instantanément la création de graphiques à partir de mes données. Le classeur B me sert juste "d'archivage" des graphiques. Lorsque j'utilise le bout de code que j'ai mis, les graphiques se copient bien dans le classeur B en gardant leur courbes. Après je gère pas l'enregistrement.. j'ai essayé avec les codes que vous m'avez proposé mais ça ne marche pas, je vois pas bien où ça plante..

    @vinc_bilb : Dans le code je ne parcours pas mes feuilles pq j'utilise l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Sheets(Feuilles).Select
        Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)
    Feuilles sélectionne l'ensemble des feuilles de mon tableau, enfin c'est comme ça que je le vois...

    Merci pour votre aide en tout cas !!

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Méfies toi car pour moi les graphiques ne vivent pas sans données...
    Si tu les copies sans données sources entre 2 classeurs, les données sources utilisées sont dans ton classeur initial ("A" il me semble).
    Vérifies cela en regardant les données des graphiques classeur "B".

    Tu parles de sauvegarde donc si tu veux conserver tes graphiques, il faut choisir:
    - soit d'avoir des graphiques avec leurs données
    - soit de les conserver comme graphiques "morts" (images, PDF...)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour

    Si vous avez encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Feuilles(1 To 4)
     
        Feuilles(1) = "Graph1" 
        Feuilles(2) = "Graph2"
        Feuilles(3) = "Graph3"
        Feuilles(4) = "Graph4"
     
        Sheets(Feuilles).Select
        Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)
    => Si ça marche, je serais vraiment surpris: une sheet est définie par son nom ou son index, et là vous avez un tableau!

    et voir aussi la partie sauvegarde avec une boite de dialogue, si besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'VB Voir quelquechose comme
    Do
        fName = Application.GetSaveAsFilename
    Loop Until fName <> False
    Workbooks(FichierOùColler).SaveAs Filename:=fName
    End Sub
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Citation Envoyé par vinc_bilb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Feuilles(1 To 4)
     
        Feuilles(1) = "Graph1" 
        Feuilles(2) = "Graph2"
        Feuilles(3) = "Graph3"
        Feuilles(4) = "Graph4"
     
        Sheets(Feuilles).Select
        Sheets(Feuilles).Copy After:=Workbooks(FichierOùColler).Sheets(1)
    => Si ça marche, je serais vraiment surpris: une sheet est définie par son nom ou son index, et là vous avez un tableau!
    @vinc_bilb: Je te confirme: la méthode Select d'une feuille gère ce type de sélection (tu peux également utiliser Array() directement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Sheets(Array("Graph1", "Graph2", "Graph3","Graph4")).Select
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Merci
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 86
    Points : 59
    Points
    59
    Par défaut
    Oui effet c'est beaucoup plus simple d'enregistrer en format image vu que mes données reste sur le classeur A !

    Voilà la procédure mise en place :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Permet d'exporter les graphiques au format jpeg
    Private Sub ExportGraph_Click()
     
        Dim Graph As Chart
     
        If Not (FeuilleExiste("Graph1") Or FeuilleExiste("Graph2") Or FeuilleExiste("Graph3") Or FeuilleExiste("Graph4")) Then
     
        For Each Graph In ThisWorkbook.Charts
            Graph.Export Filename:=ThisWorkbook.Path & "\" & Graph.Name & ".jpg", FilterName:="jpg"
           ' Graph.Export Application.GetSaveAsFilename(Graph.Name, "Fichier Texte (*.jpg), *.jpg")
        Next
     
    End Sub
    Merci bcp pour votre aide à tous !

  17. #17
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Content que tu aies résolu ton problème...
    Et merci d'avoir partagé la solution !
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/02/2014, 18h51
  2. [XL-2000] Enregistrement nouveau classeur
    Par ancel17 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/11/2013, 16h38
  3. enregistrement et création de nouveau classeur avec edition de feuille
    Par nicdodo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/03/2012, 03h21
  4. [XL-2003] Créer un nouveau classeur et l'enregistrer
    Par tioch dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/08/2011, 11h29
  5. Réponses: 4
    Dernier message: 29/05/2008, 15h56

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