Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Fichier CSV en EXCEL

vincenot

XLDnaute Nouveau
Bonjour et bonne année à tous et à toutes,
J'ai un souci avec un fichier CSV que je souhaite récupérer dans Excel (Version 365). Je passe par DONNES > obtenir des données, mais je récupère les données dans une seule colonne :-(

J'ai essayé de lui préciser le séparateur, mais cela ne fonctionne toujours pas.

Auriez-vous une idée ?

Merci beaucoup d'avance et bon après-midi.
 

Pièces jointes

  • User Activity Report (1).zip
    667 bytes · Affichages: 7

Phil69970

XLDnaute Barbatruc
Bonjour à tous

L'enregistreur de macro me donne ceci en moins de 30 secondes !!!

VB:
Sub Macro1()
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1)), TrailingMinusNumbers:=True
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A1").Select
End Sub

Code à nettoyer pour le rendre plus propre !!!
 

chris

XLDnaute Barbatruc
Bonjour à tous

C'est surtout que le csv contient n'importe quoi en terme de guillemets donc la non reconnaissance automatique ou même guidée de sa structure...
Ça sort d'où ?
 

chris

XLDnaute Barbatruc
Il n'a pas été bidouillé après sortie (ouvert avec n'importe quoi et sauvegardé par exemple) ?

Je doute fort qu'une application digne de ce nom soit incapable de sortir un csv normalisé qui oblige à une manipulation supplémentaire
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir en effet le fichier .txt de l'archive est encodé en udf-8
donc les outils lecture classique de vba convertissent les caractères speciaux
il faut donc le streamer avec adobstream
juste pour le fun et en passant
j'inclu ma petite fonction qui va bien
a la sortie c'est un TS
dans un fichier xl
VB:
Sub test()
    Dim texto As String, x, Fichier As String
    Fichier = "C:\Users\patricktoulon\Desktop\User Activity Report (1).csv"
    Open_For_Read_Force_Udf_8 Fichier, texto
    texto = Replace(texto, """", "")
    lignes = Split(texto, vbCrLf)
    With ActiveSheet
        Cells.Clear
        For i = 0 To UBound(lignes)
            If lignes(i) <> "" Then
                t = Split(lignes(i), ",")
                Cells(i + 1, 1).Resize(, UBound(t) + 1) = t
                c = IIf(c < UBound(t), UBound(t), c)
            End If
        Next
        .UsedRange.Value = .UsedRange.Value
        .ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = "Tableau1"
        .UsedRange.Columns.AutoFit
    End With
End Sub
Function Open_For_Read_Force_Udf_8(ByVal Fichier$, texto$)
'fonction de lecture des fichier.txt en UDF-8
'patricktoulon
'version  2021
    Dim lachaine As String, x: x = FreeFile
    'lecture binnaire
    Open Fichier For Binary Access Read As #x: lachaine = String(LOF(x), " "): Get #x, , lachaine: Close #x
    If Not lachaine Like "*[Ã|é|è|ç|â|€|«|»|û|ê|…|/ø|ø|À|É|È|Ã|Ö|]*" Then    'si la chaine ne contient pas de carateres sbizarre
        texto = lachaine    ' alors texto = lachaine
    Else    ' sinon on stream le fichier avec ADOBD.Stream

        With CreateObject("ADODB.Stream")
            .Charset = "utf-8": .Open: .LoadFromFile (Fichier): texto = .ReadText()
        End With
    End If
End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…