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, mon souci c'est que la pièce jointe est en CSV et je n'arrive pas à convertir proprement le CSV en XLS pour ensuite pouvoir modifier certaines cellules en VBA.
Voici mon code :
Private Sub objInbox_ItemAdd(ByVal Item As Object)
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.xls" '& objAttach.FileName
Next
Set objAttachments = Nothing
Call modif
End If
End If
End Sub
Donc j'enregistre ma pièce en xls, du coup les cellules sont toutes en colonne A au lieu d'être proprement réparti en fonction du point virgule. Si jamais j'essaie en code de réouvrir ce XLS et de convertir les colonnes :
''Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
''Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Mon dossier\essai.xls")
''wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
'wsExcel.Columns("A:A").TextToColumns Destination:=wsExcel.Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, 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), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), _
Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array( _
59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), _
Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array( _
72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1)), _
TrailingMinusNumbers:=True
Il ne se passe visiblement pas grand chose. Je tourne en rond sans comprendre.
Merci de votre aide,
J'ai un code qui me permet d'enregistrer une pièce jointe quand un mail arrive dans ma boite aux lettres, mon souci c'est que la pièce jointe est en CSV et je n'arrive pas à convertir proprement le CSV en XLS pour ensuite pouvoir modifier certaines cellules en VBA.
Voici mon code :
Private Sub objInbox_ItemAdd(ByVal Item As Object)
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.xls" '& objAttach.FileName
Next
Set objAttachments = Nothing
Call modif
End If
End If
End Sub
Donc j'enregistre ma pièce en xls, du coup les cellules sont toutes en colonne A au lieu d'être proprement réparti en fonction du point virgule. Si jamais j'essaie en code de réouvrir ce XLS et de convertir les colonnes :
''Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
''Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Mon dossier\essai.xls")
''wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
'wsExcel.Columns("A:A").TextToColumns Destination:=wsExcel.Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, 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), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), _
Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array( _
59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), _
Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array( _
72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1)), _
TrailingMinusNumbers:=True
Il ne se passe visiblement pas grand chose. Je tourne en rond sans comprendre.
Merci de votre aide,