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 :

Enregistrer un seul onglet dans un nouveau fichier [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut Enregistrer un seul onglet dans un nouveau fichier
    Bonjour,

    Voici ce que j'essaie de faire (sans succès pour l'instant) :

    Je dispose d'un fichier EXCEL nommé "FOLLOW_UP_TEST.xlsm" comportant de nombreux onglets.

    Je souhaiterais enregistrer uniquement l'onglet "COMPARE" de ce fichier dans un nouveau fichier qui se nommerait "COMPARE_TEST_A_Date_heure.xlsx".

    Le nouveau fichier ne doit pas comporter de formules. Il s'agit donc de faire un copier coller spécial valeurs.

    Voici un début de procédure (qui ne fonctionne pas ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Create_new_file()
    Dim Filename As String
    '
    'Saisie du dossier
    Dossier_racine = InputBox("Enter the root directory", "Root directory", "P:\2-Planning\Test\2019\IDs")
    '
    Worksheets("COMPARE").Copy
    With ActiveWorkbook
         .SaveAs Filename:="Compare_TEST_A_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
         .Close SaveChanges:=False
    End With
    End Sub
    Des suggestions ? Merci par avance.

    Cdlt.
    Jérôme.

  2. #2
    Expert confirmé
    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
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Ouh la!

    Filename est un mot clé de VBA, non une variable.

    D'autre part, le classeur venant d'être sauvegardé, l'argument SaveChanges est redondant.

    Après en avoir intégré les méthodes et propriétés, essaie d'adapter ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub copie_wks()
     
    Dim dossier_racine As String
    dossier_racine = InputBox(Prompt:="Enter the root directory", Title:="Root directory", Default:="P:\2-Planning\Test\2019\IDs")
     
    Feuil1.Copy
    With ActiveWorkbook
            With .ActiveSheet.UsedRange
                    .Value = .Value
            End With
            .SaveAs Filename:=dossier_racine & Application.PathSeparator & "Compare_TEST_A_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
            .Close
    End With
    Tu remarqueras que, une chaîne de caractères étant attendue, l'Inputbox est déclaré en String.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    perso j'aimerais bien comprendre l'interet de l'utilisation d'un input ca fait plusieurs demande que je vois passer avec ce procédé
    ca m'interpelle

    perso je pense qu'avec la boite de dialogue GetSaveAsFilename,il nous est toujours possible de choisir un autre chemin par des simple clics
    ainsi que modifier le nom qui est codé par défaut (en bleu dans le dialog)

    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
    Sub copie_wks()
        Dim chemin_complet As Variant, dossier As String, Lname As String
        dossier = "P:\2-Planning\Test\2019\IDs"
        Lname = "Compare_TEST_A_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".xlsx"
        chemin_complet = Application.GetSaveAsFilename(InitialFileName:=dossier & "\" & Lname, filefilter:="Exel Files (sans macro) (*.xlsx), *.xlsx", Title:="ENREGISTREMENT DE LA COPIE DE LA FEUILLE")
        If chemin_complet <> False Then
            Feuil1.Copy
            With ActiveWorkbook
                With .ActiveSheet.UsedRange
                    .Value = .Value
                End With
                .SaveAs Filename:=chemin_complet, FileFormat:=xlOpenXMLWorkbook
                .Close
            End With
        End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    Bonjour,

    MERCI beaucoup à vous deux !!

    J'ai remplacé :

    par
    car c'est la feuille "COMPARE" que je veux copier. Le pb c'est que même si je mets "compare" en majuscule, automatiquement il est modifié et remis en minuscule. Quand j'exécute j'ai une erreur de compilation....fonction ou variable attendue.

    Un truc m'échappe. Pourquoi "chemin complet" intègre t-il "dossier" ? dossier peut varier si je choisis d'enregistrer le fichier ailleurs que dans le dossier par défaut ?

    pour ma culture, que signifie l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If chemin_complet <> False Then
    Merci pour vos lumières...

    Cdlt.
    Jérôme.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    Je pense avoir compris...

    Je remplace :

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("COMPARE").Copy
    L'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If chemin_complet <> False Then
    teste si le dossier existe. Si chemin_complet est différent de False signifie (si j'ai bien compris) si chemin_complet existe alors copie l'onglet "COMPARE" sinon ne fait rien.

    Merci à vous...

    Cdlt.
    Jérôme.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    teste si le dossier existe. Si chemin_complet est différent de False signifie (si j'ai bien compris) si chemin_complet existe alors copie l'onglet "COMPARE" sinon ne fait rien.
    pas tout a fait
    normalement il existe pas

    le test false c'est pour le retour du dialog au cas ou tu ai cliquer "annuler"ca renvoie false c'est normal donc ne fait rien
    mais en aucun cas il test si un dossier ou fichier existe
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2007] Copier des onglets dans un nouveau fichier
    Par Sergio33600 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/11/2018, 19h26
  2. [XL-2010] Copie d'onglets dans un nouveau fichier
    Par ka0z dans le forum Excel
    Réponses: 3
    Dernier message: 12/08/2014, 10h46
  3. Réponses: 2
    Dernier message: 18/02/2011, 09h58
  4. Réponses: 1
    Dernier message: 05/08/2010, 21h37
  5. enregistrement des feuilles dans un nouveau fichier
    Par PAYASS59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2010, 16h44

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