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 une selection classeur 1 vers nouveau classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Par défaut Copier une selection classeur 1 vers nouveau classeur
    Bonjour, je ne comprends pas comment résoudre mon problème.
    J'ai un classeur 1 que je crée chaque jour et je bosse dessus...
    En fin de journée, un bouton (une macro) devrait permettre d'exporter l'une des feuilles de ce classeur dans un second qui doit se créer.
    J'ai une bel erreur 9 comme quoi il arrive pas à trouver le nouveau classeur que je viens d'ouvrir...
    Si une âme charitable veut bien me porter secours....

    Voici le code :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Export_blabla()
    '
    '
    Dim nom, nom2 As String
    Dim datduJour, jj, mm, aa As String
     
        datduJour = Date
        jj = Mid(datduJour, 1, 2)
        mm = Mid(datduJour, 4, 2)
        aa = Mid(datduJour, 7, 4)
        datduJour = jj & "-" & mm & "-" & aa
     
        nom = ActiveWorkbook.Name
        nom2 = "Com " & datduJour & ".xls"
     
        Sheets("Com_origine").Select
        Cells.Select
        Selection.Copy
     
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
        xlBook.SaveAs Filename:= _
            "(mon chemin)" & nom2, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        xlApp.Visible = True
     
    'logiquement pour moi le classeur en ligne est celui que je viens d'ouvrir ???
     
        Sheets("Feuil1").Activate
    ' j'ai une erreur 9
     
        Sheets("Feuil1").Select
        Cells.Select
        ActiveSheet.Paste
     
        Sheets("Feuil1").Name = "Com_a_envoyer"
        Sheets("Feuil2").Select
        Sheets("Feuil2").Name = "Com_secondaire"    
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    merci d'éditer ton message et d'y utiliser l'icône # dévolue pour le code puis enfin d'indiquer quelle n° de ligne déclenche l'erreur
    et le message exact !

    Si le code part bien d'Excel, pourquoi donc ouvrir un second Excel en ligne n° … ?!

    Tu peux tout reprendre en utilisant l'Enregistreur de macros pour te donner une nouvelle base de code …

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Teste ce qui suit en adaptant le chemin sur le disque. Lors de la copie d'une feuille, si Before ou After sont omis, un nouveau classeur est créé par défaut :
    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
     
    Sub Exporter()
     
        Dim Classeur As Workbook
        Dim Nom As String
        Dim Chemin As String
     
        'à adapter...
        Chemin = "C:\"
     
        Nom = "Com " & Format(Date, "dd-mm-yy") & ".xls"
     
        'si Before ou After sont omis, un nouveau classeur est créé par défaut
        Sheets("Feuil1").Copy
     
        Set Classeur = ActiveWorkbook
     
       With Classeur
     
            .Worksheets("Feuil1").Name = "Com_a_envoyer"
            .Worksheets("Feuil2").Name = "Com_secondaire"
            .SaveAs Chemin & Nom
     
        End With
     
    End Sub
    Hervé.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Oups, désolé,

    petite erreur dans mon code car le classeur créé ne contient qu'une feuille (ça m'apprendra à le tester avant !). Celui-ci fonctionne :
    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
    28
     
    Sub Exporter()
     
        Dim Classeur As Workbook
        Dim Fe As Worksheet
        Dim Nom As String
        Dim Chemin As String
     
        'à adapter...
        Chemin = "D:\"
     
        Nom = "Com " & Format(Date, "dd-mm-yy") & ".xls"
     
        'si Before ou After sont omis, un nouveau classeur est créé par défaut
        Sheets("Feuil1").Copy
     
        Set Classeur = ActiveWorkbook
     
       With Classeur
     
            .Worksheets("Feuil1").Name = "Com_a_envoyer"
            Set Fe = .Worksheets.Add(.Worksheets("Com_a_envoyer"))
            Fe.Name = "Com_secondaire"
            .SaveAs Chemin & Nom
     
        End With
     
    End Sub
    Hervé.

Discussions similaires

  1. Réponses: 8
    Dernier message: 24/01/2014, 12h23
  2. Réponses: 15
    Dernier message: 23/05/2013, 19h33
  3. [XL-2003] Copier des onglets vers nouveau classeur avec Variable
    Par xbb12 dans le forum Excel
    Réponses: 2
    Dernier message: 24/03/2010, 16h26
  4. Réponses: 6
    Dernier message: 03/09/2009, 18h23
  5. [AC-2003] Copier une plage de cellules d'un classeur vers un autre classeur
    Par bdcds dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/06/2009, 14h58

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