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 Sub

et 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 Sub

Cordialement

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 . De plus aucunes données n'a été collée dans le fichier A... Et une erreur 9 est apparue.

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 il aurait été simple de trouver ceci

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 Sub

Comme 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.

Rechercher des sujets similaires à "copier colonne entiere fichier telecharge"