Comment faire un copier coller en transposant les données ?
eglantine217
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 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
- Retrouver un copier-coller android - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
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