Problème de conversion csv avec des dates

  • Initiateur de la discussion Initiateur de la discussion lebarbo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lebarbo

XLDnaute Occasionnel
Bonjour à tous,

J'ai un code qui me permet d'enregistrer une pièce jointe quand un mail arrive dans ma boite aux lettres, jusque là ça va. Ensuite le CSV est retraité pour modifier certaines cellules grâce à du VBA.
Mon souci est que cette transformation me modifie mes dates et les passes en format anglais automatiquement.

Voici mon code dans Otulook :

Dans le ThisOutlook j'ai :
---------------------------------------------
Dim WithEvents objInbox As Outlook.Items
Private Sub Application_Startup()
Set objInbox = Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub objInbox_ItemAdd(ByVal Item As Object)
Const xlNormal = -4143

If Item.Class = OLmail And InStr(1, Item.Subject, "Repères") > 0 Then
If Item.Attachments.Count > 0 Then
Dim objAttachments As Outlook.Attachments
Set objAttachments = Item.Attachments
For Each objAttach In objAttachments
' Does not handle duplicate filename scenarios
objAttach.SaveAsFile "C:\Mon dossier\essai.csv" '& objAttach.FileName

Next
Set objAttachments = Nothing
Call modif
End If
End If

End Sub
------------------------------------

Dans mon module :
----------------------------------
Sub modif()
Dim appExcel
Dim wbExcel
Dim wsExcel

Const xlDown = -4121
Const xlDelimited = 1

'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
''Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Mon dossier\essai.csv")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)

appExcel.DisplayAlerts = False
wsExcel.Columns(1).TextToColumns Destination:=wsExcel.Range("A1"), DataType:=xlDelimited, Tab:=False, Semicolon:=True
appExcel.DisplayAlerts = True

'Code pour modifier le fichier

DerLigne = wsExcel.Range("A1").End(xlDown).Row

For i = 2 To DerLigne

If wsExcel.Cells(i, 2).Value = "55" Then
wsExcel.Cells(i, 6).Value = wsExcel.Cells(i, 6).Value & "Oui"
End If

Next i

appExcel.DisplayAlerts = False
wbExcel.SaveAs "C:\Mon dossier\essai.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
appExcel.DisplayAlerts = True


wbExcel.Close False 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

End Sub
---------------------------
A mon avis le problème vient de ce code :
wsExcel.Columns(1).TextToColumns Destination:=wsExcel.Range("A1"), DataType:=xlDelimited, Tab:=False, Semicolon:=True

Mais je ne sais pas quoi faire.

Merci d'avance,
 

Pièces jointes

Dernière édition:
Re : Problème de conversion csv avec des dates

Bonjour à tous,

Après de longues heures de recherche, j'ai trouvé la solution, il suffisait d'ajouter :
FieldInfo:=Array(0, xlDMYFormat)
à la ligne :
wsExcel.Columns(1).TextToColumns Destination:=wsExcel.Range("A1"), DataType:=xlDelimited, Tab:=False, Semicolon:=True

Il suffisait juste de le savoir ; )
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
612
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
889
Réponses
5
Affichages
279
Réponses
2
Affichages
287
Réponses
4
Affichages
629
Retour