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 lignes de multiples fichiers xls et les coller dans un seul fichier xls


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut Copier des lignes de multiples fichiers xls et les coller dans un seul fichier xls
    bonjour,

    Le code joint permet de copier toutes les lignes Xls des fichiers dans un répertoire et les regrouper dans un seul.

    Sauf que ce code ne permet pas de récupérer les couleurs de chaque ligne.

    Avez vous une idée de ce que je peux ajouter au code pour réaliser cette fonction ?
    Merci d'avance
    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
    Sub Transfert_des_lignes()
    '
    'Sub tranfertClasseursFermes_VersFeuilleActive()
        'Nécessite d'activer la référence
            'Microsoft ActiveX Data Objects x.x Library
        Dim cn As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim j As Integer
        Dim i As Long
        Dim Fichier As String, Repertoire As String, Name As String
        Name = "Feuil1"
     
     
        i = 1
     
        'Boucle sur les classeurs Excel du répertoire cible
        Repertoire = "D:\DATAN\Test_Excel\Essai_1"
        Fichier = Dir(Repertoire & "\*.xls")
     
        Do While Fichier <> ""
            'Connection au classeur Excel
            Set cn = New ADODB.Connection
            cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & Repertoire & "\" & Fichier & ";" & _
                "Extended Properties=""Excel 8.0;"""
     
            'requête pour extraire les données de la Feuil1
            Set Rst = New ADODB.Recordset
     
            Rst.Open "SELECT * from [Feuil1$]", cn, adOpenStatic
     
            'Si la requete donne un resultat
            If Not Rst.EOF Then
                'S'il s'agit de la premiere ligne :
                'on boucle sur les en-tetes afin d'en extraire les noms
                If i = 1 Then
                    For j = 0 To Rst.Fields.Count - 1
                        Cells(i, j + 1) = Rst.Fields(j).Name
                    Next j
     
                    i = 2
                End If
     
                'Copie le résultat de la requete dans la feuille active
                Range("A" & i).CopyFromRecordset Rst
                'Récupère le numero de la premiere ligne vide pour la
                'boucle suivante.
                i = Range("A1").End(xlDown).Row + 1
            End If
     
            'Fermeture recordset
            Rst.Close
            Set Rst = Nothing
            'Fermeture de la connection au classeur Excel
            cn.Close
            Set cn = Nothing
        Fichier = Dir
        Loop
     
    End Sub

  2. #2
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Voici un code que j'utilise pour copier d'une feuille sur une autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets(types).Range("A1:C3").Copy Destination:=Sheets(types).Range("A8")
    Tu peux adapter car quand tu ouvres plusieurs classeur tu y accède par une syntaxe du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbook("Classeur1").sheets("NomSheet")...
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut
    bonjour,

    merci pour cette réponse rapide.

    Par contre, je ne suis pas fort dans ce type de code. Peux tu me dire si je dois remplacer mon code par le code que tu proposes ou sinon peux tu traduire ton code dans le code que je proposes ?

    cordialement,

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

Discussions similaires

  1. Coller dans 1 seul fichier des données issues de plusieurs fichiers
    Par Lalou83 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/09/2014, 08h42
  2. Réponses: 3
    Dernier message: 18/06/2014, 10h44
  3. Supprimer n lignes d'un fichier.txt et les renvoyer dans un autre fichier
    Par supcomingenieur dans le forum Shell et commandes GNU
    Réponses: 64
    Dernier message: 30/04/2013, 13h59
  4. Réponses: 3
    Dernier message: 31/08/2010, 18h12
  5. [XL-2007] Extraire des lignes en fonction d'une valeur de cellule dans un autre fichier
    Par MisterTambo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2009, 10h42

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