Sauvegarder fichier
Bonjour à toutes et à tous.
Je vais essayer de faire simple en étant compréhensible (cette fois) !
Je vous explique. Je reçois le matin, 3 fichiers avec des données. Les données ont va dire sont "paralèlles" (c'est le même type), mais ce n'est pas les mêmes (3 entreprises différentes).
Je reçois 3 fichiers au format CSV, chaque vendredi matin je les enregistre en .xlsx, puis ensuite les importent dans mon fichier grâce à ce code :
Sub Import()
Sheets("Menu").Select
PathName = Range("C11").Value
Filename = Range("C12").Value
TabName = Range("C13").Value
ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=PathName & Filename
ActiveSheet.Name = TabName
Sheets(TabName).Copy After:=Workbooks(ControlFile).Sheets(1)
Windows(Filename).Activate
ActiveWorkbook.Close SaveChanges:=False
Windows(ControlFile).Activate
Sheets("Menu").Select
Range("A1").Select
End SubDans C11 se trouve le chemin actuel du fichier (trouvé automatiquement) dans C12 le nom du fichier qui va être importé et dans C13 le nom de la feuille ou les données seront importées.
J'aimerais savoir : est-il possible grâce à une macro d'ouvrir le fichier qui vient le vendredi matin, et de le ré-enregistre en .xlsx ?
J'ai fait un code comme ça :
PathName = Range("C11").Value
Filename = Range("C12").Value
Dataname = Range("C15").Value
Workbooks.Open Filename:=PathName & Dataname
ActiveWorkbook.SaveAs Filename:=PathName & Filename, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.CloseLe problème c'est qu'il met tout dans la celulle A séparé de " ; " mais lorsque que je le fais à la main pour enregistrer la macro là ça aparaît juste...
Pour info, le fichier CSV que j'ouvre à la base est bien formaté ( une valeur par celulle ) mais quand j'enregistre en .xlsx, il est juste aussi ( une valeur par celulle ) mais lors du passage dans la macro échec.
Merci par avance.
Bonsoir,
des fois, je me demande à quoi cela sert de poster des codes. Je suppose que ta demande est la suite ou un complément de ce lien --> https://forum.excel-pratique.com/post115523.html#p115523
Le code Sub import devrait être celui-ci :
Sub Import()
Dim PathName As String, FileName As String, TabName As String, controlfile As String
With Sheets("Menu")
.Select
PathName = .Range("C11").Value
FileName = .Range("C12").Value
TabName = .Range("C13").Value
controlfile = ActiveWorkbook.Name
Workbooks.Open FileName:=PathName & FileName
Sheets(TabName).Copy After:=Workbooks(controlfile).Sheets(1)
Workbooks(FileName).Close SaveChanges:=False
.Range("A1").Select
End With
End SubLe problème c'est qu'il met tout dans la celulle A séparé de " ; "
Dans ton code on ne voit rien au sujet la cellule A. de quoi s'agit-il ?
A bientôt
Il s'agit de la cellule A1 du fichier XLSX (enregistré par rapport au CSV)
merci je teste cet après midi.
-- 18 Fév 2011, 13:51 --
Non çA ne fonctionne pas ...
Il créé bien un fichier .xlsx a partir du fichier CSV (le fichier csv est bien formaté) mais le fichier qui est créé (xlsx) perd tout le formatage et sépart les données de ;.
Merci.
re,
Non çA ne fonctionne pas ...
Normal je ne t'ai pas donné de solution. Le code que j'ai placé dans le post n'est qu'un correctif à celui que tu avais placé dans ta demande.
Pour ton soucis de voir toutes tes données en colonne A, tu as un outil excel qui devrait faire l'affaire je pense (si j'ai bien compris du moins). Sélectionne ta colonne A puis va dans Données / convertir et prends l'option "largeur délimité" puis suis l'assistant qui mettra toutes tes données de la colonne A dans plusieurs colonnes.
Amicalement