Creation d'un fichier csv a partir d'un doc excel sur plusieurs feuilles

1gazelle Messages postés 24 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 24 mars 2005 - 8 mars 2005 à 15:08
elog29 Messages postés 25 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 12 mai 2006 - 10 mars 2005 à 12:39
Bonjour,

j'ai recupere ce code pour exporter une feuille Excel en format de fichier CSV.
il parcours toutes les feuilles mais il ecrase a chaque nouvelle feuilles les données precedentes dans le nouveau fichier.
quelqu'un aurait-il une idée? une simple piste?
je seche...

Private Sub BtOK_Click()


Dim temp As Boolean
Dim Resultat As Boolean
Dim i As Long
Dim Feuille As Worksheets
Resultat = True
MsgBox Worksheets.Count


For i = 1 To Worksheets.Count


temp = fExportCommaDelimitedFile(Worksheets(i), "Donnees.csv") If temp False Then Resultat False

Next i


If (Resultat = False) Then
MsgBox ("Erreur lors du la création du fichier csv")
End If

End Sub



'*********************** Code Start ***************************
Function fExportCommaDelimitedFile(objSht As Excel.Worksheet, strDestinationFile As String) As Boolean
'*******************************************
'Nom: fExportCommaDelimitedFile (Function)
'But: Écrire une feuille en format CSV
'Auteur: Dev Ashish
'Date: March 10, 1999, 12:21:10 PM
'Called by: Any
'Calls: sAppActivate
'Inputs: objSht - Feuille Excel déjà ouverte, par automation
' strDestinationFile - Chemin de la destionation pour le fichier CSV
'Output: True si tout est correct, false autrement
'*******************************************
Dim intFileNum As Integer
Dim lngColCount As Long
Dim lngTotalColumns As Long
Dim lngTotalRows As Long
Dim lngRowCount As Long
Const conQ = """"
Const conERR_GENERIC = vbObjectError + 2100


intFileNum = FreeFile()
On Error GoTo ErrHandler

'Active l'instance d'Access
Call sAppActivate

'Si le fichier cible existe, demander confirmation avant d'écraser
If Len(Dir(strDestinationFile)) > 0 Then
If MsgBox("Le fichier de destination existe déjà " & vbCrLf & vbCrLf & strDestinationFile & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "Etes-vous sûr de vouloir l'effacer?", vbQuestion + vbYesNo, "confirmer svp") = vbYes Then
'Kill strDestinationFile
Else
Err.Raise conERR_GENERIC
End If
End If

'Créer le fichier CSV
Open strDestinationFile For Output As #intFileNum

With objSht
'Déterminer le nombre de colonnes
lngTotalColumns = .UsedRange.Columns.Count
'Déterminer le nombre de lignes
lngTotalRows = .UsedRange.Rows.Count
'Traverser toutes les lignes
For lngRowCount = 1 To lngTotalRows
' et chaque colonne
For lngColCount = 1 To lngTotalColumns
' Écrire le texte de la cellule, avec guillements
If RTrim$(.Cells(lngRowCount, lngColCount).Value) <> "" Then
Print #intFileNum, conQ & RTrim$(.Cells(lngRowCount, lngColCount).Value) & conQ;
' Vérifier si c'est la dernière colonne
If lngColCount = lngTotalColumns Then
'la fin
Print #intFileNum,
Else
' autrement, ajouter une virgule
Print #intFileNum, ",";
End If
End If
Next lngColCount
DoEvents
Next lngRowCount
End With
fExportCommaDelimitedFile = True
ExitHere:
On Error Resume Next
' Call SysCmd(acSysCmdRemoveMeter)
Close #intFileNum
Exit Function
ErrHandler:
fExportCommaDelimitedFile = False
Resume ExitHere
End Function


Private Sub sAppActivate()
'Active l'intance d'Access
'
Dim strCaption As String
On Error Resume Next
strCaption = Application.CurrentDb.Properties("AppTitle")
If Err Then strCaption = "Microsoft Access"
AppActivate strCaption
End Sub
'*********************** Code End ***************************

1 réponse

elog29 Messages postés 25 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 12 mai 2006 1
10 mars 2005 à 12:39
Open strDestinationFile For <STRIKE>Output</STRIKE> Append As #intFileNum
0
Rejoignez-nous