Comment faire un copier coller en transposant les données ?

eglantine217 Messages postés 64 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Le but est d'avoir un fichier Excel nommé « classeur1 » qui récupère toutes les données de plusieurs fichiers excel présents dans un répertoire qui stocke ces fichiers excel (fichier 1 2 3 et 4), le chemin d'accès est connu, ouvre un par un ces fichiers et colle les données de la colonne A du fichier 1 dans le classeur 1 destiné à la récupération de l'ensemble des données.

Exemple : classeur1 ouvert

Clique sur la macro

Ouvre le fichier 1 excel copie la colonne A et la colle en ligne dans la ligne A1 du classeur 1

Puis fermeture du fichier 1

Ouverture du fichier 2 copie la colonne A et la colle en ligne A2 du fichier classeur1 puis ferme le fichier 2 et ainsi desuite

Sub transfert()

Dim Fichier As String, Chemin As String
Dim wb As Workbook

Chemin = "C:\Documents and Settings\Desktop\folder des fichiers excel 1 2 3 4\"

Fichier = Dir(Chemin & "*.xls")

Do While Fichier <> ""

Set wb = Workbooks.Open(Chemin & Fichier)

Const FO = "Liste"
Const FD = "Feuil1"

Const CellD = "A2"
Const CellD2 = "B2"

Dim lifin As Long

Set FDest = ThisWorkbook
Set FPrem = Workbooks.Open(Chemin & Fichier)

lifin = Range("A" & Rows.Count).End(xlUp).Row

'Ce que je souhaite c'est de coller les valeurs en ligne et pas en colonne (transposer)
'et d'incrémenter la ligne à chaque fin de collage pour que la suite des données se mettent au fur et à mesure

FPrem.Sheets(FO).Range("A7:A" & lifin).Copy Workbooks("Classeur1.xls").Sheets(FD).Range(CellD)

FPrem.Close True
Set wb = Nothing
Fichier = Dir
Loop

End Sub

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Pourquoi avoir defini des constantes Const CellD = "A2" et Const CellD2 = "B2" si vous voulez ecrire vos donnees en mode incremental?????

    'ecriture de cellules transposees
    'lig etant la ligne du classeur1 apres le dernier enregistrement de donnees (a rechercher apres chaque enregistrement)
    '1 pour colonne A et lifin pour la derniere colonne (variable d'apres vos infos)
    Workbooks("Classeur1.xls").Sheets(FD).Range(Cells(lig, 1), Cells(lig, lifin)) = Application.Transpose(FPrem.Sheets(FO).Range("A7:A" & lifin))

    A+
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour, re Fxx,
    Je confirme les remarques de Fxx, pourquoi toutes ces constantes ??
    Une piste à tester..
    Sub transfert() 
    Dim Fichier As String, Chemin As String, DerLig As Long 
    Dim Xks As Worksheet 
        Set wks = Sheets("Feuil1") 
        Chemin = "C:\Documents and Settings\Desktop\folder des fichiers excel 1 2 3 4\" 
        DerLig = 2 
        Fichier = Dir(Chemin & "*.xls") 
         
        Do While Fichier <> "" 
            Workbooks.Open (Chemin & Fichier) 
            With Sheets("Liste") 
                .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Copy 
            End With 
            wks.Range("B" & DerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
            :=False, Transpose:=True 
            DerLig = DerLig + 1 
            ActiveWorkbook.Close 
            Fichier = Dir 
        Loop 
        Set wks = Nothing 
    End Sub

    A+
    Note : Pas une bonne idée de mettre tes classeurs dans Documents and Settings sur Vista il faut être administrateur pour y accéder et sur W7 c'est interdit.

    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour lermite,

      sur W7 c'est interdit. Vous pouvez developper??
      0
    2. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      C'est clair non ?, si tu veux écrire dans ce répertoire tu n'auras que des erreurs.
      Documents and Settings n'est même plus visible dans W7, c'est comme s'il n'existait pas.
      Sur Vista tu le vois encore mais tu ne peu "écrire dedans".
      Conseil : Crée des répertoires ailleurs
      A+
      0
    3. regcal Messages postés 13011 Date d'inscription   Statut Contributeur Dernière intervention   4 659
       
      Documents and Settings est remplacé par users dans W7
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re lermite, bonjour regal,

      complement d'infos, Users c'est pour la programmation et fenetre cmd, et c'est Utilisateurs avec l'exploreur de windows 7 et 8 ,install en francais y suppos(itoire)

      Bye
      0
    5. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Fxx.. aie pas de ce côté stp....
      douleurs atroces... (c'est pour rire)
      0