Structurer des données

Fermé
VBA_93 - 20 déc. 2016 à 13:58
 VBA_93 - 20 déc. 2016 à 16:20
Bonjour à tous,

J'ai réalisé (avec l'aide de Zoul67) une macro qui me permet de convertir des fichiers en .dbf en .csv sous excel 2010 français.
Voici la macro :
Sub ConvertDBF_to_CSV()
Dim strDocPath As String
Dim strCurrentFile As String
Dim Fname As String
Dim sFiles
Dim x As Integer, y As Integer
Application.ScreenUpdating = True

x = 0
y = 0
sFiles = Dir(ThisWorkbook.Path & "*.dbf")
'count the files
Do Until sFiles = ""
x = x + 1
sFiles = Dir
Loop

strDocPath = "C:\Users\fg733136\Documents\Projet Horaire PCC\03SABRAQUE corrigé\03SABRAQUE corrigé\"
'strCurrentFile = Dir(strDocPath & "*.*")
strCurrentFile = Dir(strDocPath & "*.dbf")

Do While strCurrentFile <> ""
y = y + 1
'display current status on status bar
Application.StatusBar = "Conversion " & y & " of " & x

Workbooks.Open Filename:=strDocPath & strCurrentFile
Fname = Left$(strCurrentFile, Len(strCurrentFile) - 4) & ".csv"
ActiveWorkbook.SaveAs Filename:=strDocPath & Fname, FileFormat:=6, CreateBackup:=False, local:=True

strCurrentFile = Dir
Loop
Application.StatusBar = False 'release the status bar back to excel
Application.ScreenUpdating = False
End Sub

Le souci c'est que la conversion est faite mais j'ai l'impression qu'il ne prend pas en compte les caractères spéciaux et de plus les données sont toutes dans une seule cellule.
J'aimerais donc savoir comment mieux les classer lors de la conversion.
Merci d'avance pour vos réponses !

1 réponse

f894009 Messages postés 17240 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 février 2025 1 713
Modifié par f894009 le 20/12/2016 à 14:30
Bonjour,

mettez cette ligne en commentaire
'Application.ScreenUpdating = True
mettez un point d'arret a cette ligne
Fname = Left$(strCurrentFile, Len(strCurrentFile) - 4) & ".csv"

lancez votre macro et des l'arret regardez a quoi ressemble le fichier dbf ouvert par excel

pas en compte les caractères spéciaux ????????
0
Bonjour f894009,
Merci pour la réponse alors j'ai fais ce que tu m'as expliqué et le résultat reste le même, ce que je voulais par caractère spéciaux c'est qu'il me mets certains caractères qu'on utilise pas d'habitude.
0
f894009 Messages postés 17240 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 février 2025 1 713 > VBA_93
20 déc. 2016 à 14:50
Re,

caractères qu'on utilise pas d'habitude.
Reste a savoir s'ils font parti des donnees ou pas.

Je n'ai pas de fichiers DBF, mais pouvez-vous en mettre un a dispo pour voir le separateur de champ (normalement c'est une tabulation, mais faut voir) et ces fameux caracteres speciaux
0
Je peux pas en mettre à disposition mais par exemple voila ce qui est mélangé avec mes caractères normaux :0Jèy 0ˆs c'est juste un exemple. Mais par rapport aux données il existerait pas un moyen de mieux les classer pendant la conversion?
0
f894009 Messages postés 17240 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 février 2025 1 713 > VBA_93
Modifié par f894009 le 20/12/2016 à 15:19
Re,

Ouvrez un DBF avec NotePad ou mieux NotePad++ et regardez comment ca s'affiche
Si vous aviez un outil genre HxD qui permet de voir les fichiers en deux parties, une en Hexadecimal et l'autre ce qui en texte vous pourriez determiner le separateur de champ de facon a pouvoir faire une conversion de donnees via excel (repartition en fonction d'un separateur au choix, voir menu, donnees, convertir) en VBA
0
Re,
Je l'ai ouvert avec Notepad++ vu que j'ai que sa pour le moment et je vois qu'il y a de % des accent mélangés avec le nom des champs et des NUL EXT EOT RS écrit en blanc sur fond noir . Je sais pas si sa peut aider.
0