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 des feuilles dans nouveau classeur [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    Par défaut copier des feuilles dans nouveau classeur
    Bonjour amis codeurs et tout le forum

    Je me tourne une nouvelle fois vers vous car là je bloque complètement sur une partie de mon programme.

    Le but de cette partie est de copier des feuilles d'un classeur, suivant une condition, dans un nouveau classeur, tout fraîchement créé, après la feuille 1

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Private Sub CommandButton4_Click()
    
    '****déclaration des variables****
    Dim xlApp As New Excel.Application
    
    Dim catalogue As Workbook
    'fichier cible
    
    Dim CatalogueEco As Workbook
    'fichier source1
    
    Dim CatalogueConfort As Workbook
    'fichier source2
    
    Dim Thecell As Range
    Dim Thesheet As Worksheet
    
    '****définition des classeurs****
    Set CatalogueConfort = xlApp.Workbooks.Open("K:\11 - COMMERCIAL\03 - Enregistrements\Affaires Projet\AXICONCEPT PB 2011\test\Catalogue confort")
    
    Set CatalogueEco = xlApp.Workbooks.Open("K:\11 - COMMERCIAL\03 - Enregistrements\Affaires Projet\AXICONCEPT PB 2011\test\Catalogue économique")
    
    Set catalogue = Workbooks.Add
    
    '**** lancement du test et de la copie****
    
    'définition des valeurs des cellules à tester contenu dans le classeur source
    For Each Thecell In ThisWorkbook.Sheets("materiel").Range("A4", ThisWorkbook.Sheets("materiel").Cells(Rows.Count, 1).End(xlUp))
    
    'condition de sélection du fichier source1
        If Thecell.Offset(0, 3).Value = "économique" Then
    'définition des valeurs des feuilles à tester contenu dans le classeur source
            For Each Thesheet In CatalogueEco.Worksheets
    
    'condition de copie de la feuille du fichier source dans le fichier cible 
                If Thesheet.Name = Thecell.Value Then
                Thesheet.Copy after:=catalogue.Worksheets(1)
    'c'est lors de cette phase de copie que tout bloque
    
                Exit For
                End If
            Next
        Else
    'condition de sélection du fichier source2
            If Thecell.Offset(0, 3).Value = "confort" Then
    'définition des valeurs des feuilles à tester contenu dans le classeur source
                For Each Thesheet In CatalogueConfort.Sheets
    
    'condition de copie de la feuille du fichier source dans le fichier cible 
                    If Thesheet.Name = Thecell.Value Then
                    Thesheet.Copy after:=catalogue.Worksheets(1)
    'c'est lors de cette phase de copie que tout bloque
    
                    Exit For
                    End If
                Next
            End If
        End If
    Next
    
    CatalogueEco.Saved = True
    CatalogueConfort.Saved = True
    
    CatalogueEco.Close
    CatalogueConfort.Close
    
    Set CatalogueEco = Nothing
    Set CatalogueConfort = Nothing
    
    xlApp.Quit
    
    End Sub
    voici le message d'erreur qui est affiché
    "Erreur d'exécution '1004':
    la méthode 'Copy' de l'objet '_Worksheet' a échoué"

    je vous remercie d'avance de votre aide

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Tu as ouvert CatalogueEco et Catalogue confort dans xlAPP.
    Catalogue est ouvert dans l'application qui contient le projet VBA qui s'exécute.

    Tu ne peux pas copier d'une application à une autre.

    Cordialement,

    PGZ

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Tout d'abord merci pgz de prendre un peu de ton temps pour me répondre

    si j'ai bien tout compris à tes explications, il suffirait que j'intègre le nouveau classeur créé ("catalogue") dans la nouvelle application ouverte ("xlApp").

    soit le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton4_Click()
    
    '****définition des classeurs****
    Set catalogue = xlApp.Workbooks.Add
    
    End Sub
    effectivement ça marche

    merci pour tes éclaircissements: je pensais qu'un échange entre applications étaient faisable mais apparement je me trompais

    par contre comment puis je faire pour que ce nouveau classeur ainsi créé se rende visible à la fin de ma procédure ?

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Tu peux faire Si nécesaire, tu peux ajouter un Activate.

    PGZ

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    ça marche nickel merci pgz

    sujet résolu

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

Discussions similaires

  1. Ouvrir (et non copier) plusieurs excels dans nouveau classeur
    Par Buck92 dans le forum Général Python
    Réponses: 0
    Dernier message: 20/05/2010, 11h16
  2. [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
  3. Copier une feuille dans un classeur nouvellement créé
    Par jonathanoudelet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2008, 10h57
  4. liaisons des feuilles dans un classeur excel
    Par ritonetmumu dans le forum Excel
    Réponses: 4
    Dernier message: 07/12/2007, 19h03
  5. Réponses: 4
    Dernier message: 26/07/2007, 21h56

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