Copier une colonne entière d'un fichier A téléchargé sur un fichier B
Bonjour à toutes et à tous,
Comme vous pourrez le voir... 1h30 du matin je continus à essayer mais là je n'arrive même plus à comprendre mes VBA
Contexte:
Tous les jours je télécharge un fichier Excel en .csv dans un dossier compressé. Ce fichier CSV je ne le garde que pour les datas qu'il contient, après quoi le fichier est supprimé.
Toutes les données intéressantes se trouvent en cellule A1 jusqu'à A5900, et mon second Excel me permet de les afficher correctement.
Synthèse:
Etant donné que je fais cette même manipulation tous les jours, j'essaye de l'automatiser le plus possible donc il faudrait que mon VBA (présent dans le Excel que je conserve, appelons-le A) puisse copier toute la colonne A du fichier téléchargé (Excel B) pour la coller en A7 d'un onglet spécifique (traitement) du fichier A.
Macro:
Voici mon code
Sub Macro4()
Dim ws1 As Workbook
Dim wd2 As Workbook
Set ws1 = ThisWorkbook
Set wd2 = Application.GetOpenFilename() (même si le fichier reste dans les téléchargements, il faut que l'utilisateur puisse quand même le chercher)
wd2.Sheets("Feuille1").Range("A:A").Copy Destination:=ws1.Sheets("traitement").Range("A7")
End Subet j'ai une erreur 424... Lors de mon Set WD2...
Merci de toute l'aide que vous pourriez me fournir !
Bonjour Sacha et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Pour votre problématique : VBA ne s'apprend pas en 1 minute, c'est donc normal de patauger au début
Voici le code et l'explicationj
Sub Macro4()
Dim sPathFic As String
Dim Wbk1 As Workbook
Dim Wbk2 As Workbook
Set Wbk1 = ThisWorkbook
' (même si le fichier reste dans les téléchargements, il faut que l'utilisateur puisse quand même le chercher)
' GetOpenFilename renvoit le chemin d'accès complet au fichier et est une valeur de type string
sPathFic = Application.GetOpenFilename()
' Qu'on ouvre par la suite
Set Wbk2 = Workbooks.Open(sPathFic)
Wbk2.Sheets("Feuille1").Range("A:A").Copy Destination:=Wbk1.Sheets("traitement").Range("A7")
End SubCordialement
Bonjour Bruno,
Merci pour tes éclaircissements mais cela ne fonctionne toujours pas... En réalité, pour une raison qui m'échappe, le Excel B (dont je cherche à copier toute la colonne pour la coller dans mon Excel A) à filtré les données de la plage A
J'ai placé dans un dossier la disposition des différents fichiers, peut-être que ça joue aussi dans le bon fonctionnement de la macro...
Impossible de mettre le dossier ici donc :
-Nouveau dossier
-Fichier A (Nom du dossier)
Upload (fichier prenant en charge les macros Excel 2016)
(5 onglets : la macro doit mettre les données du Excel B dans la feuille 2)
-Fichier B (Nom du dossier)
Data (Nom du Fichier en .CSV)
(un seul onglet avec juste la colonne A remplie - données format standard)
Re,
Certainement en remplaçant cette ligne
Wbk2.Sheets("Feuille1").Range("A:A").Copy Destination:=Wbk1.Sheets("traitement").Range("A7")Par
Wbk2.Sheets(1).Range("A:A").Copy Destination:=Wbk1.Sheets("traitement").Range("A7")Un CSV n'a pas d'onglet proprement dit, il porte le nom du fichier
Quand tu as un erreur, clique sur [Débogage] et fais une capture d'écran de la ligne qui est surlignée
A+
Alors avec un petit changement sur la Range le transfert fonctionne !
Le problème était qu'Excel ne pouvait pas copier la colonne A:A et la mettre à partir de A7 (Taille différente) donc j'ai simplement modifié mes arguments en A1:A5900 et A7:A5907.
Mais les données qui sont copiées sont transformées en dates… J'aimerais que lors de la copie, les cellules (qui sont au format standard) gardent ce format dans mon fichier de destination.
J'ai vu l'utilisation du Past ainsi que de la méthode Copy de l'objet Range avec un .value mais comment adapter ces techniques à mon code sans casser le transfert qui se fait correctement ?
Impossible de garder le même format que le fichier source avec le .copy destination cependant avec
.PasteSpacial xlPasteValuesAndNumberFormat
je peux conserver le format du fichier source mais ne peux plus envoyer ces données dans mon fichier d'origine...
Bonsoir,
Je n'ai pour habitude de donner des solutions quand la réponse est aussi simple, mais bon
Avec un petit peu de recherche de votre part
Sub Macro4()
Dim sPathFic As String
Dim Wbk1 As Workbook
Dim Wbk2 As Workbook
Set Wbk1 = ThisWorkbook
' (même si le fichier reste dans les téléchargements, il faut que l'utilisateur puisse quand même le chercher)
' GetOpenFilename renvoit le chemin d'accès complet au fichier et est une valeur de type string
sPathFic = Application.GetOpenFilename()
' Qu'on ouvre par la suite
Set Wbk2 = Workbooks.Open(sPathFic)
Wbk2.Sheets("Feuille1").Range("A1:A6000").Copy
Wbk1.Sheets("traitement").Range("A7").PasteSpecial Operation:=xlPasteValuesAndNumberFormat
End SubComme le disait Gandhi : “C'est dans l'effort que l'on trouve la satisfaction et non dans la réussite. Un plein effort est une pleine victoire.”
Bonne soirée
Edit modo
Je dois malheureusement me former sur des exemples de ce type en passant à coté des bases (par manque de temps, pour le moment).
Je vous remercie de votre temps même si la version de votre formule modifie non seulement la disposition des données de mon fichier source (ce qui rend inutilisable mes autres macros et est l'inverse du but recherché vu que je désir le même format/même organisation des informations dans les cellules) mais engendre également une
"erreur d'exécution '1004':
La méthode PasteSpecial de la Range a échoué."
Je verrais de mon coté comment palier ce problème de "réorganisation".
Très bonne soirée.