Bonjour,
Je viens vers vous pour un problème de suppression de lignes dans un export CSV (UTF-8 et séparateur |)
Je souhaite importer une plage de données générée à partir d'un formulaire (de façon automatique).Or des champs sont remplis par défaut sur les lignes non renseignées, et je ne souhaite pas les exporter (cf fichier joint)
Grace à ce site, un programme m'a été fourmi. J'ai voulu y ajouter un filtre pour n'enregistrer que les lignes saisies dans le formulaire mais cela ne fonctionne pas.
Je vous remercie par avance pour votre aide précieuse!
Caroline
Sub exportFaits()
Dim Plage As Range, oL As Range, Oc As Range, Tmp As String
Dim k As Long
Dim i As Long
Set Plage = Worksheets("Report automatique").Range("A1").CurrentRegion
Open ThisWorkbook.Path & "\" & "Test" & ".csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
If oL.Cells(1, 1).Value <> "" Then
For Each Oc In oL.Cells
Select Case Oc.Column
Case 6: Tmp = Tmp & Format(Oc.Value, "dd/mm/yyyy") & "|"
Case 7: Tmp = Tmp & Format(Oc.Value, "hh:mm") & "|"
Case Else: Tmp = Tmp & CStr(Oc.Text) & "|"
End Select
Next
Tmp = Left(Tmp, Len(Tmp) - 1)
Print #1, Utf8_Encode(Tmp)
End If
Next
Close
End Sub
Public Function Utf8_Encode(ByRef Txt As String) As String
Dim Data() As Byte, S As String, i As Long
With CreateObject("ADODB.Stream") ' init stream
.Charset = "utf-8"
.Mode = adModeReadWrite
.Type = adTypeText
.Open
.WriteText Txt ' write bytes into stream
.Flush
.Position = 0 ' rewind stream and read text
.Type = adTypeBinary
.Read 3 ' skip first 3 bytes as this is the utf-8 marker
Data = .Read()
.Close ' close up and return
End With
For i = 0 To UBound(Data) 'Convert back to ascii
S = S & Chr(Data(i))
Next i
Utf8_Encode = S
End Function