IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Enregistrement automatique des pièces jointes sous Outlook2000


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut Enregistrement automatique des pièces jointes sous Outlook2000
    Bonjour,

    J’ai un problème que je n’arrive pas à résoudre depuis quelques jours maintenant,
    Je m’explique
    Je travail sous Outlook 2000 , et j’aimerais créer une règle ou Macro qui me permettra de distingué les pièces jointe qui portent un nom X et les enregistrer automatiquement dans un dossier que j’ai crée sur mon poste de travail.
    J’ai beau chercher dans plusieurs forum et on ma toujours réorienté vers celui ci

    Merci de m’aider

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour et bienvenue sur le Forum Outlook

    Je t'invite à consulter la FAQ Outlook :

    Comment sauvegarder les pièces jointes d'un message sans ouvrir ce message ?
    Comment enregistrer mes messages sur mon disque dur ?
    Comment créer un script dans une règle d'arrivée d'un message ?

    Je pense que tu devrais t'en sortir avec cela


    Dolphy

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Bonjour

    Un grand merci à vous
    j'ai trouvé plusieurs cas de figure pour outlook 2003 mais pas pour le 2000.
    cela peux fonctionné pour le 2000 aussi ?

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Certaines règles et événements n'existent pas sous O2000

  5. #5
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    J'ai utilisé la macro suivante:

    Comment sauvegarder les pièces jointes d'un message sans ouvrir ce message ?

    Et je l'ai modifiée/simplifiée pour l'utilisation dont j'ai besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Enregistrement_PieceJointe()
     
        'Declaration
        Dim myItem, PieceJointe As Object
        Dim myOlApp As New Outlook.Application
        Dim myOlExp As Outlook.Explorer
        Dim myOlSel As Outlook.Selection
        Dim i As Integer
     
        On Error Resume Next
     
        'Actions sur les objets sélectionnés
        Set myOlExp = myOlApp.ActiveExplorer
        Set myOlSel = myOlExp.Selection
     
        For Each myItem In myOlSel
            Set PieceJointe = myItem.Attachments
     
            If PieceJointe.Count > 0 Then
                FileName = "C:\Mes documents\WebCam\WebCamPic_" & Format(myItem.ReceivedTime, "yyyy_mm_dd  hh_mm_ss  ")
     
                For i = 1 To PieceJointe.Count
                    PieceJointe(i).SaveAsFile FileName & i & ".jpg"
                Next i
     
            End If
     
        Next
     
        Set myItem = Nothing
        Set PieceJointe = Nothing
        Set myOlApp = Nothing
        Set myOlExp = Nothing
        Set myOlSel = Nothing
     
    End Sub
    J'utilise Outlook 2003.
    Quand je lance cette macro sur une dizaine de message, tout fonctionne parfaitement.

    Mais lorsque je lance la macro sur 400 messages (soit plus de 800 pièces jointes !), ça ne marche plus correctement:

    La macro n'enregistre que 93 pièces jointes. Pas une de plus. A chaque fois 93...

    J'ai exécuté la macro en pas à pas: tous se passe normalement. Au delà de 93 pièces jointes, la macro continue d'exécuter la commande "PieceJointe(i).SaveAsFile " mais plus rien ne se passe en réalité. La PJ n'est pas enregistrée.

    Vous avez déjà rencontré ce problème??? Merci.

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Les nom des fichiers sont'ils identiques ?

    si oui il faut géréer les doublons ce qui est presque fait dans ton code mais mail par mail regarde la partie "'Ici on vérifie que le fichier n'existe pas déjà sinon il serait écrasé"
    http://outlook.developpez.com/faq/?p...#VBA_save_mail

  7. #7
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui, tous les noms de fichiers sont identiques.
    Mais je renomme ces fichiers avec la date et l'heure de réception du message (secondes comprises), plus un numéro (i). Je ne reçois pas 2 e-mail durant la même seconde, donc pas de problème.
    J'ai quand même fait un essai en rajoutant un deuxième numéro (incrémenté à chaque enregistrement). Le résultat est le même. J'obtient 93 fichiers numérotés de 1 à 93. Ensuite la macro continue, mais les fichiers numéro 94, 95... ne sont pas enregistrés.

    J'ai fait un autre essai: Enregistrer 100 fois les pièces jointes d'un seul message (en rajoutant une boucle "For j=1 to 100"). Ca marche.
    Par exemple, si j'exécute ça sur un message qui comporte 6 pièces jointes, j'obtient bien 600 fichiers.

    Pour info, les fichiers que j'enregistre sont de petite taille: moins de 30 Ko.

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Etrange ,
    Essaye de vider tes fichiers temporaires dans
    %temp%

    passe Set PieceJointe = Nothing
    avant le next

  9. #9
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Essaye de vider tes fichiers temporaires dans
    %temp%
    Tu veux dire C:\temp ? C'est déjà vide.

    Citation Envoyé par Oliv- Voir le message
    passe Set PieceJointe = Nothing
    avant le next
    Ca n'a rien changé.


    Aujourd'hui ça enregistre 99 fichiers au lieu de 93!! Et avec exactement la même macro qu'au début et les mêmes messages.

    J'ai fait plein de tests, et finalement j'ai trouvé que si je renomme des pièces jointes dans les messages de bases, j'arrive à enregistrer plus de 99 fichiers. (mes pièces jointes sont des images insérées dans le corps du message)
    On dirait donc que Outlook n'arrive pas à mémoriser plus 99 fichiers qui portent le même nom.

    Finalement, j'ai contourné le problème en sélectionnant les messages un par un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub Enregistrement_PieceJointe()
     
        'Declaration
        Dim PieceJointe As Object
        Dim oMail As MailItem
        Dim myOlApp As Outlook.Application
        Dim myNamespace As NameSpace
        Dim i, j As Integer
     
        On Error Resume Next
     
        'Sélection du répertoire
        Set myOlApp = Outlook.Application
        Set myNamespace = myOlApp.GetNamespace("MAPI")
        Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
        Set myNewFolder = myFolder.Folders("IP Camera")
     
        For Each oMail In myNewFolder.Items
     
            Set PieceJointe = oMail.Attachments
            If PieceJointe.Count > 0 Then
     
                FileName = "C:\Mes documents\WebCam\WebCamPic_" & Format(oMail.ReceivedTime, "yyyy_mm_dd  hh_mm_ss  ")
                For i = 1 To PieceJointe.Count
                    PieceJointe(i).SaveAsFile FileName & i & ".jpg"
                Next i
     
            End If
            oMail.Delete
     
        Next oMail
     
        Set oMail = Nothing
        Set PieceJointe = Nothing
        Set myOlApp = Nothing
        Set myNamespace = Nothing
        Set myFolder = Nothing
        Set myNewFolder = Nothing
     
    End Sub

    Merci pour ton aide Oliv-

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Non %TEMP% c'est à taper tel quel dans l'explorateur ca désigne
    C:\Documents and Settings\TON PROFIL\Local Settings\Temp

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/09/2011, 17h55
  2. [OL-2000] Enregistrement automatique des pieces jointes
    Par yoran56 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 14/07/2009, 12h35
  3. Enregistrement automatique de pièces jointes
    Par alain_godard dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 31/03/2008, 05h50
  4. affichage des pièces jointe sous outllook 2000
    Par darkbm dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 29/10/2003, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo