1ère ligne + 1ère colonne vide dans un fichier csv
Bonjour,
Je bloque sur un truc qui parait tout bête : garder la 1ère ligne et colonne vide d'un fichier .csv. (séparateur ";").
En fait j'ai fait une macro pour tout simplement déplacer une valeur dans un fichier .csv, puis l'enregistrer avec un nouveau nom, voici le code:
Sub Replace()
Workbooks.OpenText Filename:="C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-6797-01.CSV", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True
Range("L62").Cut Destination:=Range("H62")
ActiveWorkbook.SaveAs Filename:="C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-6797-01_new.CSV", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
ActiveWorkbook.Close False
End SubDans le fichier original la 1ère colonne ainsi que la 1ère ligne sont vides, et je dois absolument conserver cette mise en forme.
Mais lorsque j'ouvre mon fichier avec la valeur déplacée, je me rend compte que la colonne et la ligne vide ont disparues :(
ci-joint le fichier à modifier.
Avez-vous une idée de ce qui bloque ? on dirait que c'est lors de la fermeture du classeur que c'est supprimé.
Merci d'avance.
Alors en fait j'aimerais automatiser tout cela.
J'ai régulièrement des .csv de ce type qui sortiront d'une machine et je dois juste faire cette petite transformation pour chacun d'entre eux avant importation dans un soft.
J'aurais voulu que l'utilisateur ait juste à lancer une macro qui recup tous les fichiers d'un dossier pour effectuer cette petite manip.
Du coup je ne connais pas PowerQuery, mais ce serait possible avec ca ? sans programmation ?
Merci.
Bonsoir à tous !
J'ai régulièrement des .csv de ce type qui sortiront d'une machine et je dois juste faire cette petite transformation pour chacun d'entre eux avant importation dans un soft.
J'aurais voulu que l'utilisateur ait juste à lancer une macro qui recup tous les fichiers d'un dossier pour effectuer cette petite manip.
Du coup je ne connais pas PowerQuery, mais ce serait possible avec ca ? sans programmation ?
Ce type de traitement est la raison d'être de Power Query !
Il faudrait nous en dire un peu plus sur la nature des retraitements à opérer sur ce fichier CSV pour que l'on puisse se prononcer sur la faisabilité. Partant du principe que les modifications apportées à ce fichier seront automatiquement appliquées aux autres fichiers CVS du répertoire afin d'obtenir une synthèse.
Ce type de traitement est la raison d'être de Power Query !
Il faudrait nous en dire un peu plus sur la nature des retraitements à opérer sur ce fichier CSV pour que l'on puisse se prononcer sur la faisabilité. Partant du principe que les modifications apportées à ce fichier seront automatiquement appliquées aux autres fichiers CVS du répertoire afin d'obtenir une synthèse.
Alors il serait intéressant que j'apprenne à m'en servir en effet
Je testerai ca demain au boulot.
Le traitement est assez simple:
l'utilisateur glisserait les différents fichiers dans un dossier, par exemple:
C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-9999-01_001.csv
C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-9999-01_002.csv
C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-9999-01_003.csv
C:\Users\PA\Desktop\Export CSV\DS-084_BC-22-9999-01_004.csv
.....
Ensuite il lancerait une macro ou exécutable (ou par l'intermédiaire d'un fichier) pour que la valeur de chaque fichier .csv en L62 soit coupée et collée en H62.
J'avais prévu un enregistrement sous un nouveau nom mais finalement on peut simplement écraser le fichier (et éventuellement faire un backup de l'ancien).
Merci.
Bonsoir à tous !
La modification d'une valeur issue d'un fichier CSV ne présente pas de difficulté particulière.
Mais il vous faut comprendre que l'intérêt majeur de Power Query réside dans sa capacité, après retraitements, à produire une table unique pour être transférée à Excel, dans un tableau structuré ou dans un rapport de tableau croisé dynamique.
Si l'objectif est simplement de modifier une valeur d'un fichier CVS, de le fermer avant d'opérer le même traitement sur un autre fichier CSV, Power Query ne vous sera pas d'une grande utilité.
L'outil est destiné à lire, charger, transformer et/ou enrichir des données puis de les restituer. Pas de créer des fichiers.
Quel usage faites-vous de ces fichiers CVS modifiés ? Sont-ils, ultérieurement synthétisés ? Quelles sont les informations utiles et inutiles ?
Pas trop eu le temps de regarder aujourd'hui, mais en effet il se peut que cela ne corresponde pas à mon besoin du coup.
Les fichiers .csv modifiés seront tout simplement importés dans un logiciel, et ensuite supprimés !
Il faut vraiment juste que je change cette valeur de place (L62 --> H62) avant l'import, quelque soit la méthode utilisée, et c'est bon.
Facile à faire dans un .xlsx, mais un .csv c'est une autre histoire, actuellement si j'ai 10 fichiers générés chaque jour je les corrige à la main avant import, donc je me demandais s'il y avait pas un moyen simple d'automatiser ca.
Bonsoir à tous !
Alors VBA sera peut-être d'un grand secours.
Je vous laisse voir ceci avec les spécialistes du forum.
Hello,
Du coup c'est bon, j'ai tout simplement inséré une valeur en A1 pour que mes valeurs importantes commencent en colonne 2 et ligne 2.
Et ca fonctionne avec l'outil d'import, les valeurs remontent bien dans le soft :)
L'ajout de ligne/colonne vide dans le csv restera un mystère mais bon.
voilà le code:
Sub Replace()
Dim myfile As Variant
myfile = Application.GetOpenFilename( _
FileFilter:="CSV Files (*.csv), *.csv", MultiSelect:=True) 'ouvre une fenêtre de sélection avec un filtre sur les fichiers .csv
'If myfile = False Then Exit Sub 'si pas de sélection de fichier, fin de la macro
If Not IsArray(myfile) Then
MsgBox "Aucun fichier sélectionné !"
Exit Sub
End If
If IsArray(myfile) Then
For i = LBound(myfile, 1) To UBound(myfile, 1)
Application.DisplayAlerts = False 'on désactive les alertes
Workbooks.OpenText Filename:=myfile(i), Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True 'on ouvre le fichier sélectionné
Range("L62").Cut Destination:=Range("H62") 'on coupe la valeur en L62 pour la coller en H62
Range("A1").Value = "IMPORT FILE" 'on inscrit une valeur en A1 pour garder le format original (seule solution trouvée...)
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Name, FileFormat:=xlCSV, CreateBackup:=False, Local:=True 'on écrase le fichier original
ActiveWorkbook.Close SaveChanges:=False 'on ferme le classeur sans sauvegarde (nécessaire pour que le format soit conservé
Next i
End If
Application.DisplayAlerts = True 'on réactive les alertes
MsgBox "Traitement terminé :)"
End SubJe passe en résolu !
Merci.
