CSV & XLS : ouverture et conversion

jhofman

XLDnaute Occasionnel
Bonjour à tous

Je n'aarive pas à comprendre la logique de EXCEL lors de l'ouverture de fichier CSV (en direct ou via VBA). Parfois les données sont automatiquement "converties" et réparties dans els différentes colonnes, parfois non. comment être certain que excel réagiera dans un sens ou un autre

merci de vos réponses je suis assez dérouté...
Jhofman:)
 

mromain

XLDnaute Barbatruc
Re : CSV & XLS : ouverture et conversion

bonjour jhofman,

perso, je me suis créé une macro pour éviter ce problème. la voici
Code:
Sub ImportCsv(destSheet As Worksheet, csvFilePath As String, Optional delimiter As String = ";")
Dim myFso As FileSystemObject, csvFile As TextStream, i As Integer, j As Integer, tabStr() As String
Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.OpenTextFile(csvFilePath)
While Not csvFile.AtEndOfStream
    i = i + 1
    tabStr = Split(csvFile.ReadLine, delimiter)
    For j = LBound(tabStr) To UBound(tabStr)
        destSheet.Range("A" & i).Offset(0, j) = tabStr(j)
    Next j
Wend
End Sub
et voici comment l'utiliser
Code:
Sub test()
Dim feuilleDestination As Worksheet, fichierCsv As String
Set feuilleDestination = ThisWorkbook.Sheets("Feuil1")
fichierCsv = "E:\XLS\test\document.csv"

ImportCsv feuilleDestination, fichierCsv
End Sub
de plus, cette macro permet aussi de préciser le "délimiteur" (";" par défaut).
par exemple, si les données du fichier csv (ou texte) sont séparée par "-*-"
Code:
ImportCsv feuilleDestination, fichierCsv, "[B][COLOR=Red]-*-[/COLOR][/B]"
a+
 

jhofman

XLDnaute Occasionnel
Re : CSV & XLS : ouverture et conversion

Romain


mon problème est la gestion des dates principalement les dates ambigües anglais/francaise comme 01/12/2010 <-> 12/01/2010 !!
et ton module ne permet pas de lever le probleme
 

Staple1600

XLDnaute Barbatruc
Re : CSV & XLS : ouverture et conversion

Bonsoir à tous

jhofman
je vais prendre le temps de regarder.
C'est la moindre des choses non :rolleyes:

Sinon à quoi cela servirait-il que nous proposions des solutions si personne ne les regardait
 

mromain

XLDnaute Barbatruc
Re : CSV & XLS : ouverture et conversion

Bonjour jhofman, JM, kiki,

Voici la macro modifiée :
Si l'élément à importer ressemble à une date - de la forme xx/yy/zzzz, la macro essaye de le transformer en date
xx > le mois
yy > le jour
zzzz > l'année
Code:
[COLOR=BLUE]Sub[/COLOR] ImportCsv(destSheet [COLOR=BLUE]As[/COLOR] Worksheet, csvFilePath [COLOR=BLUE]As String[/COLOR], [COLOR=BLUE]Optional[/COLOR] delimiter [COLOR=BLUE]As String[/COLOR] = ";")
[COLOR=BLUE]Dim[/COLOR] myFso [COLOR=BLUE]As Object[/COLOR], csvFile [COLOR=BLUE]As Object[/COLOR], ligne [COLOR=BLUE]As Integer[/COLOR], colonne [COLOR=BLUE]As Integer[/COLOR], tabStr() [COLOR=BLUE]As String[/COLOR]
[COLOR=BLUE]Set[/COLOR] myFso = CreateObject("Scripting.FileSystemObject")
[COLOR=BLUE]Set[/COLOR] csvFile = myFso.OpenTextFile(csvFilePath)
[COLOR=BLUE]While Not[/COLOR] csvFile.AtEndOfStream
    ligne = ligne + 1
    tabStr = Split(csvFile.ReadLine, delimiter)
    [COLOR=BLUE]For[/COLOR] colonne = [COLOR=BLUE]LBound[/COLOR](tabStr) [COLOR=BLUE]To UBound[/COLOR](tabStr)
        [COLOR=GREEN]'si l'élément ressemble à une date, la "reformater"[/COLOR]
        [COLOR=BLUE]If[/COLOR] tabStr(colonne) [COLOR=BLUE]Like[/COLOR] "??/??/????" [COLOR=BLUE]Then[/COLOR]
            destSheet.Range("A" & ligne).Offset(0, colonne) = DateSerial(Right(tabStr(colonne), 4), Left(tabStr(colonne), 2), Mid(tabStr(colonne), 4, 2))
        
        [COLOR=GREEN]'sinon, copier l'élément tel quel[/COLOR]
        [COLOR=BLUE]Else[/COLOR]
            destSheet.Range("A" & ligne).Offset(0, colonne) = tabStr(colonne)
        [COLOR=BLUE]End If[/COLOR]
    [COLOR=BLUE]Next[/COLOR] colonne
[COLOR=BLUE]Wend[/COLOR]
[COLOR=BLUE]End Sub[/COLOR]
a+
 

jhofman

XLDnaute Occasionnel
Re : CSV & XLS : ouverture et conversion

Bonjour


Merci à tous pour votre aide



Romain ta macro donne des résultats suivants
21/09/2009 >> 09-septembre-10
22/09/2009 >> 09-octobre-10

pas facile !!

je recherche toujours...
 

jhofman

XLDnaute Occasionnel
Re : CSV & XLS : ouverture et conversion

la solution est dans cet autre post : ici
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas