Enregistrement fichier MSG avec date au format américain

nicolasBsegula Messages postés 2 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 - 21 nov. 2007 à 15:42
nicolasBsegula Messages postés 2 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 - 22 nov. 2007 à 10:19
Bonjour,
j'ai recupéré une macro sur ce site afin de sauvegarder les messages au format MSG cependant la date du fichier enregistré est sous la forme jour mois année :
 " (21.11.2007 13.52.50)Message test.msg "
Mon besoin etant de mettre cette date au format américain (année mois jour) pouvez-vous m'aider afin de modifier le code ci dessous.
Merci par avance.

Sub Enregistrements_Messages()
    On Error GoTo AddAppt_Err
    Dim myOlApp As New Outlook.Application
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
    Dim x As Integer
    Dim i As Integer
    Dim NameFile As String
    Dim NameFileTemp As String
    Dim SaveFile As Variant
    Dim myNamespace As Variant
    Dim myFolder As Variant
    Dim myExplorer As Variant
    Dim DateRecept As String
    Dim fs, f, sf
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    'Set myOlApp = CreateObject("Outlook.Application")
    Set myOlApp = Application
    Set myOlExp = myOlApp.ActiveExplorer
    Set myOlSel = myOlExp.Selection
    'Si le nombre de messages sélectionnés est inférieur à 1 => quitter programme
    If myOlSel.Count < 1 Then
        MsgBox "Aucun message sélectionné", vbCritical, "Erreur"
        Exit Sub
    End If
    DirBox.Show
    If Répertoire = "" Then Exit Sub
    Set myNamespace = myOlApp.GetNamespace("MAPI")
    Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myExplorer = myFolder.GetExplorer
    Progression.Show 0
    For x = 1 To myOlSel.Count
        Progression.ProgressBar.Max = myOlSel.Count
        Progression.ProgressBar.Value = x
        Progression.Texte.Caption = myOlSel.Item(x)
        DoEvents
        Dim fff
        fff = myOlSel.Item(x).Class
        Debug.Print fff & NameFile
        DateRecept = myOlSel.Item(x).ReceivedTime
   
        NameFile = myOlSel.Item(x)
        NameFile = " (" & DateRecept & ")" & NameFile
        NameFile = ReplaceString(NameFile, "/", ".")
        NameFile = ReplaceString(NameFile, "", "_")
        NameFile = ReplaceString(NameFile, ":", ".")
        NameFile = ReplaceString(NameFile, "*", "_")
        NameFile = ReplaceString(NameFile, "?", "_")
        NameFile = ReplaceString(NameFile, Chr(34), "_")
        NameFile = ReplaceString(NameFile, "<", "_")
        NameFile = ReplaceString(NameFile, ">", "_")
        NameFile = ReplaceString(NameFile, "|", "_")
        i = 1
        NameFileTemp = NameFile
        While fs.fileexists(Répertoire & "" & NameFile & ".msg") = True
            NameFile = NameFileTemp & " (" & i & ")"
            i = i + 1
        Wend
        myOlSel.Item(x).SaveAs Répertoire & "" & NameFile & ".msg"
        NameFile = NameFileTemp
        myOlSel.Item(x).FlagStatus = 1
        myOlSel.Item(x).Save
        
    Next x
    Unload Progression
Exit Sub
AddAppt_Err:

        If Err.Description = "Le navigateur a été fermé et ne peut pas être utilisé pour d'autres opérations. Vérifiez votre code et redémarrez Outlook." Then
            MsgBox "Aucun message sélectionné", vbCritical, "Erreur"
            Exit Sub
        End If
        MsgBox "Error " & Err.Number & vbCrLf & Err.Description & Chr(13) & "Probleme sur le MSG : " & NameFile
        
        Resume Next

End Sub

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 nov. 2007 à 20:38
Salut
Le format français est Jour/Mois/Année
Le format américain est Mois.Jour/Année
Celui dont tu parles Année/Mois/Jour est le format japonais.
Pas grave, on avait compris que ce format est évidemment pratique pour nommer des fichiers.
En fait, peu importe le nom du format, il te faudra le faire à la main :
Il te faut isoler dans 3 variables le jour, le mois et l'année.
En supposant que DateRecept est au format français (le format de ton Windows) :
   Dim Jour As String, Mois As String, Année As String
   Jour = CStr(Day(DateRecept))
   Mois = CStr(Month(DateRecept))
   Année = CStr(Year(DateRecept))
Et la date dans le format qui t'intéresse se recompose avec
   NameFile = " (" & Année & "." & Mois & "." & Jour & ")" & NameFile

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
fred0381 Messages postés 26 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 11 mars 2009
21 nov. 2007 à 20:47
Salut,

tu pourrais aussi faire :

 DateRecept = format(myOlSel.Item(x).ReceivedTime,"yy.mm.dd")

J'espere que ca pourra t'aider!
   
0
nicolasBsegula Messages postés 2 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007
22 nov. 2007 à 10:19
Merci pour vos reponses et votre réactivité.
0
Rejoignez-nous