Conversion Fichier Excel en ARFF (TXT)
Bonjour,
Je suis nouveau sur le forum et d'un niveau débutant en Matlab. J'aimerais savoir s'il est possible de convertir un tableau excel en un format particulier qu'est le fichier ARFF (Attribute Relation File Format).
Ces fichiers arff sont tout simplement des fichiers txt dont l'extension n'est pas .TXT mais .ARFF. Je veux obtenir cet ARFF à partir d'une feuille de données Excel.
Je sais comment changer l'extension d'un fichier TXT en ARFF mais je ne sais pas comment je peux rajouter des lignes dans le fichier TXT avant de changer l'extension avec VBA.
Je joins le format TXT que je veux obtenir avant la conversion en ARFF et la feuille de données que je veux traiter.
Dans le fichier TXT :
- Après "@Relation" on retrouve le nom du document
- Après chaque "@Attribute" on retrouve le titre d'une colonne avec le type de données (numeric, stringer...)
- Enfin après "@data" on trouve la liste de données chaque colonne est séparée par une virgule
avec le code :
Sub txt()
ActiveWorkbook.SaveAs Filename:="C:\test\donneeees.txt", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
J'arrive à avoir la liste de données avec les colonnes séparées par une virgule. Mais je ne sais pas comment je peux coder pour obtenir les éléments qui précédent cette liste...
Merci, pour votre aide...
Bonjour,
à tester,
Sub txt()
ActiveWorkbook.SaveAs Filename:="C:\test\donneeees.csv", FileFormat:=xlCSV, CreateBackup:=False
End SubMerci d'avoir pris le temps d'étudier mon problème. J'ai déjà utilisé ce code il me permet en effet de générer un CSV et même un TXT en changeant l'extension mais avant de générer le TXT je veux pouvoir le modifier en insérant des lignes.
Si je génère un TXT directement avec mon tableau j'ai la chose suivante avec le code ci-dessus:
Global,Level,Level B,Class
70.4,0.8,47.6,Pass
68,0.5,48.4,Pass
68.9,0.6,52.4,Pass
68.8,0.6,50,Pass
71.4,0.8,52.6,Pass
69,0.6,49.1,Pass
70.5,0.7,50.8,Pass
72,0.7,47.9,Pass
68.5,0.6,49.3,Pass
69.5,0.6,50.6,Pass
68.8,0.6,53.2,Pass
69.8,0.8,51.1,Pass
Alors que moi je voudrais pouvoir disposer le nom du document et le titre des colonnes comme ci-dessous dans le fichier TXT à générer :
@Relation Test
@Attribute Global NUMERIC
@Attribute Level NUMERIC
@Attribute Level B NUMERIC
@Attribute class {Pass,Fail}
@Data
62.7,61.3,60,Pass
58.4,62.5,62.3,Pass
62.7,60.9,59.4,Pass
61.2,53.9,53.2,Pass
63,59,63.9,63,Pass
59.3,59.9,58.3,Pass
62.2,59.2,57.3,Pass
62.7,53.4,51.1,Pass
61.7,54.8,53.9,Pass
58.5,59.7,59.1,Pass
60.5,62.9,60.6,Pass
63.6,58.5,56.6,Pass
C'est la raison pour laquelle je voudrais savoir, si cela est possible, comment instaurer des lignes dans le fichier txt que je veux générer...
Merci de votre aide
J'ai fait ça qui me donne presque le résultat désiré :
@Relation TS12,,,,,,,,,,,,,,
@Attribute Global NUMERIC,,,,,,,,,,,,,,
@Attribute Level NUMERIC,,,,,,,,,,,,,,
@Attribute Level B NUMERIC,,,,,,,,,,,,,,
"@Attribute Class {Pass,Fail}",,,,,,,,,,,,,,
@Data,,,,,,,,,,,,,,
70.4,0.8,47.6,Pass,,,,,,,,,,,
68,0.5,48.4,Pass,,,,,,,,,,,
68.9,0.6,52.4,Pass,,,,,,,,,,,
68.8,0.6,50,Pass,,,,,,,,,,,
71.4,0.8,52.6,Pass,,,,,,,,,,,
69,0.6,49.1,Pass,,,,,,,,,,,
70.5,0.7,50.8,Pass,,,,,,,,,,,
72,0.7,47.9,Pass,,,,,,,,,,,
68.5,0.6,49.3,Pass,,,,,,,,,,,
69.5,0.6,50.6,Pass,,,,,,,,,,,
68.8,0.6,53.2,Pass,,,,,,,,,,,
69.8,0.8,51.1,Pass,,,,,,,,,,,
,,,,,,,,,,,,,,
,,,,,,,,,,,,,,
C'est presque ce que je veux. Par contre je ne sais pas pourquoi j'ai toutes ces virgules à la suite de mes données. C'est comme si pour lui j'avais des valeurs supplémentaires dans mes colonnes et mes lignes... Savez-vous comment je peux y remédier ?
Je joins le bout de code non optimisé ci-dessous qui m'a permis d'obtenir ce premier résultat précédent :
Sub txt()
Dim a(6)
i = 1
While i <> 6
a(i) = Cells(1, i).Value
i = i + 1
Wend
Range("A1:D1").ClearContents
i = 1
While i <> 6
Cells(1, 1).EntireRow.Insert Shift:=xlShiftDown
i = i + 1
Wend
Range("A1").Value = "@Relation TS12"
For i = 2 To 4
Range("A" & i).Value = "@Attribute " & a(i - 1) & " NUMERIC"
Next
Range("A5").Value = "@Attribute " & a(4) & " {Pass,Fail}"
Range("A6").Value = "@Data"
ActiveWorkbook.SaveAs Filename:="C:\test\test3.txt", _
FileFormat:=xlCSV, CreateBackup:=False
End SubA la 5eme ligne du résultat dans le fichier txt j'ai des " indésirables qui apparaissent :
"@Attribute Conclusion {Pass,Fail}"
c'est la virgule dans "{Pass,Fail}" qui me rajoutent les "
si j'enlève cette virgule dans le code :
Range("A5").Value = "@Attribute " & a(4) & " {Pass,Fail}"J'obtiens le résultat suivant sans les " dans le fichier txt :
@Attribute Conclusion {Pass Fail}
Cependant dans ma structure par la suite j'ai besoin de cette virgule entre les mots Pass et Fail et ne sait vraiment pas comment faire pour l'introduire dans le code sans qu'elle ne me rajoute les " dans le fichier TXT.....
C'est bon j'ai pu faire un programme répondant à mon besoin il n'est pas encore optimisé mais ça fait l'affaire pour le moment. Merci pour ton aide