Microsoft 365 enregistrer format CSV avec virgule

philsogood

XLDnaute Nouveau
hello
question basique
g vu pas mal de réponses sur le web mais je ne suis jamais parvenu à mes fins
voici 2 fichiers, un qui est correctement formaté(fichier 1) l'autre que je voudrais formaté correctement(fichier 2)
ces fichiers sont destinés à être utilisé dans un autre logiciel (Revit)
il m'arrivent régulièrement d'avoir besoin de rajouter une nouvelle colonne de données pour compléter les objets que je crée
mais la réinjectionn dans le logiciel me fatigue particulièrement
de ce que j'ai pu lire pour un CSV avec des séparateurs virgule il faut aucune virgule dans les nombres (chose à laquelle je m'astreins)
voivi la méthode fastidieuse que j'ai trouvé et qui marche
modif du fichier
enregistrer sous CSV virgule
fermer le fichier puis l'ouvrir sous bloc note
CONTROL+H
transformer les points virgules (alors que je demande des virgules à excel!!) en virgule
enregistrer
(et souvent quand je crée un fichier recoller le résultat dans un fichier d'origine que j'ai extrait de revit car il doit rester des cellules non vides ou des trucs que le logiciel n'aiment pas)
BREF CA ME GAVE!! :)
si vous savez comment faire un enregistrer sous depuis Excel je suis preneur!!!
merci
Phil
PS : il faut changer l'extension du fichier en en CSV car ce format de fichier n'est pas valide pour l'upload)
PSS : je crois que je suis sous office 365 mais je n'ai pu le vérifier nul part... impossible de connaitre la version du logiciel)
 

Pièces jointes

  • fichier 2.xlsx
    10.8 KB · Affichages: 11
  • fichier 1.xls
    1.8 KB · Affichages: 8

sousou

XLDnaute Barbatruc
Bonjour

tu peux tester ceci en l'adaptant à ta config, bien que excel doit offrir ce que tu cherche.
à tester l'import sur to logiciel.
Sub csv()
Set fso = CreateObject("scripting.filesystemobject")
Set fich = fso.CreateTextFile("C:\Users\Utilisateur\Desktop\excel\testfile.csv", True)

With Sheets(1)
.UsedRange.Select
x = .UsedRange.Rows(2).End(xlToRight).Column
y = .UsedRange.Columns(2).End(xlDown).Row

For y1 = 1 To y
phrase = ""
For x1 = 1 To x

phrase = phrase & .Cells(x1, y1) & ","
Next
fich.writeline (phrase)
Next

End With
fich.close
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une autre façon de faire
La première macro ne sert qu'à créer des données de test.
• Mode opératoire •
Dans un classeur vierge (avec une seule feuille), insérer un module standard et copier/coller-y le code VBA ci-dessous
VB:
Sub Jeu_De_Données_Pour_Test()
Dim f$: f = "=ADDRESS(ROW()-1,COLUMN(),4)"
With Cells(1)
.Value = "ITEM_1"
.AutoFill Destination:=Range("A1:J1"), Type:=xlFillDefault
  With .Offset(1).Resize(19, 10)
  .FormulaR1C1 = f: .Value = .Value
  End With
End With
End Sub
Sub Export_CSV_virgule()
Dim sPath
sPath = ThisWorkbook.Path & "\"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=sPath & "test_001.csv", FileFormat:=xlCSV, Local:=False
End Sub
1) Lancer la macro pour créer le jeu de données de test
2) Lancer la macro Export_CSV_virgule
3) Important: fermer alors le CSV obtenu sans enregistrer les modifications

Pour vérifier le CSV obtenu, ouvrez dans le bloc-notes: les données sont bien séparées par une virgule

A tester avec le vrai fichier en situation réellle.

NB: Test OK sur Excel 2013/W10
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

philsogood
Apparemment tout te gave grave ;)
En quoi tester une macro de 4 lignes est un problème insurmontable ?? :eek:

Je parle de la macro : Export_CSV_virgule
(l'autre ne servant qu'à préparer des données pour le test d'export en CSV)
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83