Enregistrement en CSV point virgule et probleme de date

maspi69

XLDnaute Nouveau
Bonjour à tous;

Je cherche à enregistrer une seule feuille d'un classeur en format CSV ";".
Cette feuille contient des dates.
J'ai fais (enfin pompé et adapté, parce que vu mon niveau ... ) la macro suivante :

Sub CréerFichierCSV1()
'
'pour CSV1

Dim i, j, DernièreLigne, DernièreColonne
Dim NomFichierCSV1 As String

Sheets("acceuil").Select
NomFichier = Range("j27").Value

Application.ScreenUpdating = False
Sheets("CSV1 confirmation mission").Select
ActiveSheet.Range("A1").Select
Selection.CurrentRegion.Select
Set tbl = ActiveCell.CurrentRegion
DernièreLigne = tbl.Rows.Count
DernièreColonne = tbl.Columns.Count
Cells(1, 1).Select
Open "C:\temp\" & NomFichier & ".csv" For Output As #1
For i = 1 To DernièreLigne
For j = 1 To DernièreColonne - 1
Print #1, Cells(i, j).Formula + ";";
Next j
Print #1, Cells(i, j + 1).Formula 'Fin de ligne
Next i
Close #1
End Sub

Le problème est que les dates sont transformées.
Voici le résultat :

#-061569xxxx Nom1 Vanessa Client 1 41932 41943
#-061501xxxx Nom2 Patrice Client 2 41939 41943

Une âme charitable aurait-elle une idée ?

Vous remerciant par avance pour votre aide.
 

camarchepas

XLDnaute Barbatruc
Re : Enregistrement en CSV point virgule et probleme de date

Bonjour,

Il faut ajouter une ligne de traitement pour les colonnes contenant une date,

Supposons que la colonne 8 contient une date alors


For j = 1 To DernièreColonne - 1

if J = 8 then
Print #1, CDate(CStr(Cells(i, j))) & ";";
else
Print #1, Cells(i, j).Formula + ";";
end if
Next j
 

maspi69

XLDnaute Nouveau
Re : Enregistrement en CSV point virgule et probleme de date

Bonjour camarchepas,

Merci beaucoup pour ton aide. Je teste d ici fin de semaine. Mais je pense que c est bon. Je ne connaissais pas cstr. Je viens de regarder. Cela semble exactement faire ce que j attends. J ai appris encore un truc aujourd'hui. Merci
 

maspi69

XLDnaute Nouveau
Re : Enregistrement en CSV point virgule et probleme de date

Bonjour à tous

J'ai testé la proposition de camarchepas. J'ai probablement fais une erreur d'adaptation mais je ne la trouve pas. Le code erreur obtenu est "erreur d'excution 13, incompatibilité de type".
Je suis resté dubitatif devant l'écran d'aide de Microsoft.
Si quelqu'un peux m'expliquer mon erreur, un grand merci d'avance.

Voici mon code :

Sub CréerFichierCSV1()

'
'pour CSV1

Dim i, j, DernièreLigne, DernièreColonne
Dim NomFichierCSV1 As String

Sheets("acceuil").Select
NomFichier = Range("j27").Value

Application.ScreenUpdating = False
Sheets("CSV1 confirmation mission").Select
ActiveSheet.Range("A1").Select
Selection.CurrentRegion.Select
Set tbl = ActiveCell.CurrentRegion
DernièreLigne = tbl.Rows.Count
DernièreColonne = tbl.Columns.Count
Cells(1, 1).Select
Open "C:\temp\" & NomFichier & ".csv" For Output As #1
For i = 1 To DernièreLigne
For j = 1 To DernièreColonne - 1
If j = 4 Then ' premiere colonne avec des dates
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV
Else
If j = 5 Then ' deuxieme colonne avec des dates
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV
Else
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV1
End If
End If
Next j
Print #1, Cells(i, j + 1).Formula 'Fin de ligne
Next i
Close #1

End Sub

Le code se bloque à cette ligne : Print #1, CDate(CStr(Cells(i, j))) & ";"; (la première rencontré)
 

maspi69

XLDnaute Nouveau
Re : Enregistrement en CSV point virgule et probleme de date

Bonsoir camarchepas

Effectivement c est peut être le problème.
La première ligne comporte seulement une phrase que je dois conserver.
Les autres lignes sont les données proprement dites.
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 458
dernier inscrit
Vulgaris workshop