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 :

Copie d'une feuille dans un nouveau classeur XLSX [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut Copie d'une feuille dans un nouveau classeur XLSX
    Bonjour,
    je bloque sur ligne de code pour paramétrer le chemin de destination

    Résumé:
    1. je voudrais copier la feuille1 dans un nouveau classeur.
    2. je voudrais nommer ce nouveau classeur en prenant la valeur de la cellule D1 (par exemple) de la feuille1 et l'extension .xlsx
    3. et enfin fermer ce nouveau classeur sans l'ouvrir et atterrir à nouveau dans ma feuille1.
    4. Il manque des variables... pour les classeurs, les feuilles et le nom du fichier.xlsx (attribué par la valeur de la cellule D1)


    J'ai tenté ci-dessous mais enregistre le fichier dans un dossier temp! je crois qu'il manque le chemin de destination, je voudrais qu'il soit dans un dossier nommé "certificat"
    (le fichier source est dans un dossier c:\compta\)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sub ()
     dim nomfichier as string
           nomfichier = sheets("feuille1").range("D1").value & "_" & ".xlsx"
     
      Worksheets("feuille1").Copy
              With ActiveWorkbook
                    .SaveAs Filename:="cellule D1.xlsx", FileFormat:=xlOpenXMLWorkbook
                    .Close SaveChanges:=False
                End With
    end sub
    J'ai également essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     NomFichier = activeworbook.Path & "\" & ActiveWorkbook.Name & " - " & ActiveSheet.Name & ".xls"
    désolé du désordre... je suis noyé!

    merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fredym Voir le message
    Bonjour,

    Une solution possible si le répertoire de destination est déjà créé :
    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
     
    Option Explicit
     
    Sub TransformerLOngletEnFichier()
     
    Dim RepertoireCible As String, NomCible As String
    Dim ShSource As Worksheet
     
        With ActiveWorkbook
             Set ShSource = .Sheets("Feuille1")
             RepertoireCible = .Path & "\certificat\"  ' A adapter
        End With
     
        With ShSource
             NomCible = RepertoireCible & .Range("D1").Value
             .Copy
        End With
     
        With ActiveWorkbook
             .SaveAs Filename:=NomCible, FileFormat:=xlOpenXMLWorkbook
             .Close SaveChanges:=True
        End With
     
        Set ShSource = Nothing
     
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Bonjour monsieur KERGRESSE,
    J'aurais besoin de quelques précisions, corrections supplémentaires; commençons par la 1ère :

    une erreur de ma part que je n'arrive pas à résoudre...: syntaxe à la ligne 11 que je n'arrive pas à résoudre... (erreur se produit lors de l'exécution de la ligne 20)
    détail:
    - Le fichier source est sur le disque D:\société\
    - Le répertoire cible est sur le disque D:\société\certificat\
    J'ai adapté le chemin du répertoire cible comme suit à la ligne 11:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        RepertoireCible = .Path & "D:\société\certificat\"
    est-ce correct ?
    vba n'enregistre pas dans ce répertoire précis, il l'enregistre dans le cloud ondrive ! ce n'est pas le bon endroit !

    Je voudrais résoudre ce bug avant de passer à la suite.
    Merci de votre aide précieuse.
    Fredym

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fredym Voir le message
    est-ce correct ?
    Non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RepertoireCible = "D:\société\certificat\"
    A noter que le code proposé était correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        With ActiveWorkbook
             Set ShSource = .Sheets("Feuille1")
             RepertoireCible = .Path & "\certificat\" 
        End With

  5. #5
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Merci pour la correction apportée qui est ok.

    poursuivons:
    La feuille destination contient les formules de la feuille source.
    est-il possible de modifier l'instruction .copy de la ligne 16 pour obtenir les valeurs dans les cellules au lieu des formules (qui font référence à une autre feuille)

    y a t'il une fonction ou instruction pour cela ? comme copy.value ? pour toutes les cellules de la feuille

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fredym Voir le message
    Après avoir obtenu la réponse à votre question initiale, il vous faut clore votre message et en créer un autre si besoin.

    Sinon, pour réaliser ce que vous souhaitez faire, il vous faut utiliser l'enregistreur de macro. Créez une macro dans votre nouveau classeur pour enregistrez les séquences suivantes :
    Sélectionnez toutes les cellules CtrlA, copiez-les avec Ctrl-C et collez avec Collage spécial et sélectionner Valeurs.
    Terminez la macro et adaptez le code initial en faisant référence à ActiveSheet une fois dans le nouveau classeur.

  7. #7
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Merci pour l'explication détaillée!

    C'est Nickel!
    Fredym

+ 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-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
  4. Réponses: 2
    Dernier message: 15/02/2008, 09h24
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38

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