Comment faire un copier coller en transposant les données ?
eglantine217
Messages postés
64
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 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
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
A voir également:
- Comment faire un copier coller en transposant les données ?
- Fuite données maif - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Style d'écriture a copier coller - Guide
- Historique copier coller windows - Accueil - Informatique
3 réponses
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+
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+
Bonjour, re Fxx,
Je confirme les remarques de Fxx, pourquoi toutes ces constantes ??
Une piste à tester..
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 .
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 .
Bonjour à tous,
eglantine,
doublon avec https://forums.commentcamarche.net/forum/affich-27275280-comment-coller-des-donnees-dans-differentes-colonnes#p27278796 ?
Et sur tes 10 dernières questions un seul merci et aucun autre retour.
Je crois qu'il va falloir apprendre à travailler seule...
eric
eglantine,
doublon avec https://forums.commentcamarche.net/forum/affich-27275280-comment-coller-des-donnees-dans-differentes-colonnes#p27278796 ?
Et sur tes 10 dernières questions un seul merci et aucun autre retour.
Je crois qu'il va falloir apprendre à travailler seule...
eric