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 :

Code pour copier coller même feuille cible de chaque classeur


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Code pour copier coller même feuille cible de chaque classeur
    Bonjour,
    Je m'initie en VBA et je rencontre un problème, je n'arrive plus a avancer.
    Ce que je veux c'est une macro qui récupère la même feuille sur plusieurs classeurs de ma liste et colle dans une même feuille. J'ai trouvé un code que j'ai changer donc ce code ouvre chaque classeurs mais ne me copie rien. Si quelqu'un peut m'éclairer ce sera super.
    Je vous remercie d'avance

    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
    40
    41
    42
    43
    44
    Sub Lili()
    Dim ListP As Variant
    Dim CL1 As Workbook, i As Byte
    Dim FL1 As Worksheet
        Set CL1 = ThisWorkbook
     
        CL1.Sheets.Add
        CL1.ActiveSheet.Name = "Feuilyoyo"
        Set FL1 = CL1.ActiveSheet
     
     
        ListP = Array("S:\COMPTABILITE\moi\Yep\Ht2\Rt.xlsx")
     
        For i = 0 To UBound(ListP)
            Copie FL1, ListP(i)
        Next
    End Sub
    Sub Copie(FL1 As Worksheet, Fichier)
    Dim CL2 As Workbook
    Dim FL2 As Worksheet
    Dim i As Byte, Rep$, NoLigne As Long
     
         Set CL2 = Workbooks.Open(Fichier)
     
     
            For Each FL2 In CL2.Worksheets
            If FL2.Name = PAD Then
            If IsEmpty("FL2") = False Then
     
                NoLigne = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
     
               FL2.Cells.Copy = FL1.Range("A" & NoLigne)
     
                DoEvents
                Set FL2 = Nothing
            End If
            End If
            Next
     
     
            CL2.Close False
            DoEvents
            Set CL2 = Nothing
    End Sub

  2. #2
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    J'ai modifié ton code car dans l'état c'était impossible de le faire fonctionner !
    Teste en lançant la proc "lili" :
    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
    73
    74
    75
    76
    77
    78
     
    Sub Lili()
     
        Dim Tbl() As String
        Dim I As Integer
        Dim FL1 As Worksheet
     
        'ajoute une feuille au classeur et la renomme
        Set FL1 = ThisWorkbook.Worksheets.Add
        FL1.Name = "Feuilyoyo"
     
        'récupère les fichiers contenus dans le dossier et stocke les chemins dans un tableau
        Tbl = EnumFichiers("S:\COMPTABILITE\moi\Yep\Ht2\")
     
        'lance la copie
        For I = 1 To UBound(Tbl)
     
           Copie FL1, Tbl(I)
     
        Next I
     
    End Sub
     
    Sub Copie(FL1 As Worksheet, Fichier)
     
        Dim CL2 As Workbook
        Dim FL2 As Worksheet
        Dim NoLigne As Long
     
        'ouvre le classeur en cours
        Set CL2 = Workbooks.Open(Fichier)
     
        'cherche la feuille "PAD"
        For Each FL2 In CL2.Worksheets
     
            If FL2.Name = "PAD" Then
     
                'défini la première ligne vide en colonne A
                NoLigne = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
     
                'colle la partie utilisée de la feuille "PAD"
                FL2.UsedRange.Copy FL1.Range("A" & NoLigne)
     
            End If
     
        Next FL2
     
        'ferme le calsseur avant ouverture du suivant si il y a
        CL2.Close False
     
    End Sub
     
    Function EnumFichiers(Chemin As String) As String()
     
        Dim TableauFichiers() As String
        Dim Fichier As String
        Dim I As Integer
     
        'récupère les fichiers
        Fichier = Dir(Chemin)
     
        'boucle sur les fichiers du dossier
        Do While (Len(Fichier) > 0)
     
            I = I + 1
     
            ReDim Preserve TableauFichiers(1 To I)
     
            TableauFichiers(I) = Chemin & Fichier
     
            Fichier = Dir()
     
        Loop
     
        'retourne le tableau des noms de fichiers
        EnumFichiers = TableauFichiers()
     
    End Function
    Hervé.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup Hervé, mais au fait j'ai réussi à faire fonctionner le mien. Ceci fit, je vais tester le tien et je te donnerai des nouvelles.

    ( Btwn elle sert a quoi la dernière fonction que t'as ajouter dans ton code)
    Aussi, j'aimerai bien que mon code ne me copie plus les3 premières lignes a partir du deuxième classeur, si quelqu'un a une idée, je suis preneuse!

    Merci d'avance!

    Ah ok pour la fonction, j'ai compris! J'ai pas fait attention en lisant !

    Autre problématique qui s'est posé à moi, je voudrais extraire les données d'un tableau et les restituer dans un autre qui n'est pas de même format(ce derniers à deux fois plus de colonnes). Du coup, je veux une macro qui me retranscrit les données du premier classeurs dans les cases correspondantes du classeurs qui va les recevoir. Je pensais à une condition sur les noms des cellules mais je ne vois pas comment faire.

    Any help please?

  4. #4
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonsoir,

    un exemple concret ?


    Sinon consulter l'aide VBA intégrée concernant les propriétés CurrentRegion, Rows, Columns et Count

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ok je vais essayer de mieux expliquer ma requête mais sur une nouvelle discussion qui prendra comme titre : "Alimentation de fichier"

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

Discussions similaires

  1. [XL-2013] Erreur sur code pour copier-coller en valeur
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2015, 09h55
  2. Copier - coller des feuilles excel entre plusieurs classeurs
    Par DodoCanada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/04/2014, 20h58
  3. Code VBA pour copier-coller des colonnes d'un fichier Excel à un autre
    Par User Name dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2014, 23h30
  4. Copier la même feuille excel dans 800 classeurs
    Par aweb dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/10/2013, 22h04
  5. [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, 11h55

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