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 :

Erreur pour copier plusieurs feuilles dans un autre classeur [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Erreur pour copier plusieurs feuilles dans un autre classeur
    Bonjour à tous,

    Je vous sollicite car je n'arrive pas à réaliser l'opérations que je souhaite. Explication :

    J'ai un fichier qui s'apelle Test contenant 3 feuilles :
    . Sur ces 3 feuilles, la première ligne est identique pour chacune d'elles.
    . Contenu différent.
    . Certaines cellules des 3 premières colonnes sont fusionnées.

    Je souhaiterai copier le contenu des trois feuilles (jusqu'a la dernière cellule de la colonne B) vers une seule feuille dans autre classeur.
    De plus lorsque le copier/coller des feuilles est terminé, je souhaite appliquer la fonction unmerge sur les cellules fusionner et copié le contenu des cellules qui était fusionné.

    Voilà mon code, simplement c'est qu'il y a une erreur et je n'arrive pas à trouver la solution :
    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
    Sub Copier()
     
    Dim LastLig As Long
     
    With Workbooks("Test.xlsm")
     
    Var_Chemin = "C:\CopieTest.xlsx"
    fichier1 = ActiveWorkbook.Name
    Workbooks.Open Var_Chemin, 0, ReadOnly:=False
    Fichier2 = ActiveWorkbook.Name
    LastLig = Worksheets.Cells(.Rows.Count, "B").End(xlUp).Row
     
    For lngCount = 1 To Workbooks(fichier1).Worksheets.Count
     
     
    Workbooks(fichier1).Sheets(lngCount).Range("A1:E" & LastLig)Copy Before:=Workbooks(Fichier2).Sheets("Feuil1")
     
    Next
    End With
    End Sub
    Voici également les fichiers:Test.xlsx
    CopieTest.xlsx.

    J'èspere avoir été précis, en tout cas je vous remercie d'avance pour vos réponse.

    Bonne journée.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La syntaxe de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier1).Sheets(lngCount).Range("A1:E" & LastLig)Copy Before:=Workbooks(Fichier2).Sheets("Feuil1")
    sert à copier une feuille de plus, il faut un point avant "Copy". Si c'est le cas, il faut enlever :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:E" & LastLig)
    En effet, c'est toute la feuille que tu copies, y compris les éventuelles macros.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Bonjour Daniel et Mercatog

    Merci pour vos réponses.
    En effet, vos solutions fonctionne.

    Cependant, j'aimerais juste copier tous le contenus des 3 feuilles dans une seule feuille qui se trouve sur autre classeur. C'est à dire mettre les tableaux à la suite des autres dans une unique feuille.

    Cordialement.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Essaie :

    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
    Sub Copier()
     
    Dim LastLig As Long, Ligne As Long
     
    With Workbooks("Test.xlsm")
     
    Var_Chemin = "C:\CopieTest.xlsx"
    fichier1 = ActiveWorkbook.Name
    Workbooks.Open Var_Chemin, 0, ReadOnly:=False
    Fichier2 = ActiveWorkbook.Name
    Ligne = 1
    For lngCount = 1 To Workbooks(fichier1).Worksheets.Count
     
    LastLig = Worksheets.Cells(.Rows.Count, "B").End(xlUp).Row
    Workbooks(fichier1).Sheets(lngCount).Range("A1:E" & LastLig).Copy Workbooks(Fichier2).Sheets("Feuil1").Cells(Ligne, 1)
    Ligne = Workbooks(Fichier2).Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row + 1
     
    Next
    End With
    End Sub

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    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
    Sub Copier()
    Dim Wbk As Workbook
    Dim Ws As Worksheet
    Dim Chemin As String
    Dim NewLig As Long
     
    Application.ScreenUpdating = False
    Chemin = "C:\CopieTest.xlsx"
    If Dir(Chemin) <> "" Then
        Set Wbk = Workbooks.Open(Filename:=Chemin, UpdateLinks:=False)
        With Wbk.Worksheets(1)
            For Each Ws In ThisWorkbook.Worksheets
                NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                Ws.UsedRange.Copy .Range("A" & NewLig)
            Next Ws
        End With
        Wbk.Close True
        Set Wbk = Nothing
        MsgBox "Copie terminée"
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Après de multiples essaies, le code se bloque pour les deux méthodes (Daniel et Mercatog) au même niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LastLig = Worksheets.Cells(.Rows.Count, "B").End(xlUp).Row
    NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
    Merci à vous deux.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Ce n'est pas ce que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Workbooks(Fichier2).Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Tu pourrais aussi dire quel est le message d'erreur.

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Quelque chose comme ceci (copie de toutes les feuilles du fichier contenant la macro vers le fichier CopieTest)
    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
    Sub Copier()
    Dim Wbk As Workbook
    Dim Ws As Worksheet
    Dim Chemin As String
     
    Application.ScreenUpdating = False
    Chemin = "C:\CopieTest.xlsx"
    If Dir(Chemin) <> "" Then
        Set Wbk = Workbooks.Open(Filename:=Chemin, UpdateLinks:=False)
        For Each Ws In ThisWorkbook.Worksheets
            Ws.Copy Before:=Wbk.Worksheets("Feuil1")
        Next Ws
        Wbk.Close True
        Set Wbk = Nothing
        MsgBox "Copie terminée"
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub

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

Discussions similaires

  1. VBA Copier plusieurs cellules dans uen autre feuille
    Par Tm7555555 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2013, 20h25
  2. [XL-2007] Copier-coller plusieurs feuilles dans un autre classeur (xlsm=>xlsx)
    Par Cesaror dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/06/2012, 12h55
  3. [XL-2002] Macro pour copier une feuille dans un autre classeur
    Par JBeaunez dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2012, 22h46
  4. [XL-2003] Copier une feuille dans un autre classeur
    Par mistermail dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2009, 19h06
  5. [VBA-E] Erreur pour copier une feuille
    Par Persons dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/06/2006, 23h38

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