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 :

Problème sur règle de macro de sauvegarde


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut Problème sur règle de macro de sauvegarde
    Bonjour, j'ai un soucis sur une règle de macro e sauvegarde des pièces jointes, je souhaite interdire la sauvegarde des png jpg et gif du coup j'ai fais ca et ca marche pas :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Sub SauvegarderPiecesattacheesnonarchive()
     
        Dim olApp As Outlook.Application
        Dim objItem As Outlook.MailItem
        Dim NbrPiecesAttachees As Integer
        Dim nomFichier As String
        Dim NumeroFichierAttache
        Dim Compteur
     
        Set olApp = New Outlook.Application
     
        On Error Resume Next
     
        Compteur = 1
        For Each objItem In Application.ActiveExplorer.Selection
     
            NbrPiecesAttachees = objItem.Attachments.Count
     
            For NumeroFichierAttache = 1 To NbrPiecesAttachees Step 1
                'place le nom du fichier qui va être supprimé dans le corps du mail
                nomFichier = objItem.Attachments.Item(NumeroFichierAttache).FileName
                       If nomFichier = ".jpg" Then
         objItem.Delete
                End If
                If nomFichier = ".png" Then
             objItem.Delete
                End If
                If nomFichier = ".gif" Then
               objItem.Delete
                End If
     
                objItem.Attachments.Item(NumeroFichierAttache).SaveAsFile ("C:\Users\pavot.cyprien1e\Music\" & Compteur & nomFichier)
                Compteur = Compteur + 1
                 If nomFichier = ".jpg" Then
         objItem.Delete
                End If
                If nomFichier = ".png" Then
             objItem.Delete
                End If
                If nomFichier = ".gif" Then
               objItem.Delete
                End If
     
            Next
    Set objItem = Nothing
        Next
     
     
    MsgBox "C'est bon les pièces jointes ont été copiés avec succés dans C:\Users\pavot.cyprien1e\Documents\musique\"
    End Sub

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    A la place de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If nomFichier = ".jpg" Then
    objItem.Delete
    End If
    Tu as essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Right(nomFichier, 4) = ".jpg" Then
    objItem.Delete
    End If

  3. #3
    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,
    Effectivement, c'est pas bon.
    regarde là
    en dessous de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each PJ In MyMail.Attachments
    tu peux faire ton test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if PJ.FileName like "*.jpg" or PJ.FileName like "*.png" then
    next PJ
    ' rien
    END IF

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Le soucis c'est qu'il me dit qu'il n'y a pas de for déclaré pour le next du coup je sais pas ou déclarer ce for

  5. #5
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Finalement le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Right(nomFichier, 4) = ".jpg" Then
    objItem.Delete
    End If
    fonctionne, mais que pour les jpg, quand je modifie en .png et .gif, cela n'est pas pris en compte pourquoi ? merci d'avance

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu as peut-être des noms de fichier en majuscules ?

    Si c'est le cas, mets ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If uCase(Right(nomFichier, 4)) = ".JPG" Or uCase(Right(nomFichier, 4)) = ".PNG"  Or uCase(Right(nomFichier, 4)) = ".GIF" Then
    objItem.Delete
    End If

  7. #7
    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
    sauf erreur avec le code suivant tu supprimes le mail en entier, il pourrait contenir plusieurs PJ
    et si tu supprimes des mail il faut commencer à l'envers ta boucle

  8. #8
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Ta proposition de code fonctionne toujours mais que pour les jpg , les png et les gif ne sont pas supprimés curieux non ?

  9. #9
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu peux nous montrer ton code modifié ?

  10. #10
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Salut, j'ai finis par réussir à faire ce que je voulais fgràce à vous deux je vous en remercie et vous souhaite bonne continuation, à bientôt peut-être !!

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Right(nomFichier, 4) = ".png" Or Right(nomFichier, 4) = ".gif" Or Right(nomFichier, 4) = ".jpg" Or Right(nomFichier, 4) = ".GIF" Or Right(nomFichier, 4) = "PNG" Or Right(nomFichier, 4) = ".JPG" Then
    objItem.Delete
    End If

  11. #11
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Finalement je fais appel à vous encore une fois car je ne veux pas que le mail soit supprimer je veux juste éviter de sauvegarder les pngs. Quel alternative j'ai pour cela ?

  12. #12
    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
    Citation Envoyé par Oliv- Voir le message
    Bonjour,
    Effectivement, c'est pas bon.
    regarde là
    en dessous de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each PJ In MyMail.Attachments
    tu peux faire ton test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if PJ.FileName like "*.jpg" or PJ.FileName like "*.png" then
    next PJ
    ' rien
    END IF
    As tu consulté le lien de ma réponse ci-dessus ?

  13. #13
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Oui je l'ai consulté, mais je n'ai rien trouvé sur les règles interdisant les pièces jointes de type images sans supprimer l'email, en outre j'ai essayer ton code, mais il ne fonctionne pas, ou alors je ne sais pas bien ou le mettre. Je sais que je ne suis pas bien doué en VBA c'est pourquoi je fais appel à vous et je vous remercie déjà de ce que vous avez pu faire pour moi

  14. #14
    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
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Sub ENREGISTRE_PJ_SELECTION()
    Dim objItem as item
    Dim StrID As Outlook.MailItem
     
    For Each objItem In Application.ActiveExplorer.Selection
    if    objItem.class=.Class = olMail then 
     
         Set StrID = objItem
         call extrait_PJ_vers_rep (StrID)
    End if
    Next 
    End Sub
     
     
     
    Sub extrait_PJ_vers_rep(StrID As Outlook.MailItem)
    ' ***olivier CATTEAU*** script
    ' 23 avril 2007
     
        Dim olNS As Outlook.NameSpace
        Dim myMail As Outlook.MailItem
        Dim expediteur
        Set olNS = Application.GetNamespace("MAPI")
        Set myMail = olNS.GetItemFromID(StrID.EntryID)
     
    'MsgBox "nouveau message"
     
    If myMail.Attachments.Count > 0 Then
     
        'on crée le repertoire où mettre les fichiers joints ##########################################################
     
        Repertoire = "C:\Users\pavot.cyprien1e\Music\"
     
        'If Repertoire <> "" Then
        '    If "" = Dir("d:\temp\", vbDirectory) Then
        '        MkDir "d:\temp\"
        '    End If
        '    If "" = Dir(Repertoire, vbDirectory) Then
        '        MkDir Repertoire
        '    End If
        'End If
     
     
     
        'on traite les pj
        Dim pj, TypeAtt
        For Each pj In myMail.Attachments
     
             if UCASE(PJ.FileName) like "*.JPG" or PJ.FileName like "*.PNG"  or PJ.FileName like "*.GIF" then
    GOTO              nextPJ
                 ' rien
               END IF
     
                n = 1
                MemPath = pj.FileName
                PathNomExport = MemPath
                While Dir(Repertoire & PathNomExport) <> ""
                    'MsgBox "Le fichier " & vbCr & PathNomExport & vbCr & "existe déjà", vbInformation
                    PathNomExport = "(" & n & ")" & MemPath
                    n = n + 1
                Wend
     
                pj.SaveAsFile Repertoire & PathNomExport
     
     
            End If
    nextPJ:
        Next pj
     
     
     
    ''on déplace le mail vers un dossier outlook
    'Dim myDestFolder As Outlook.MAPIFolder
     
    'Set myDestFolder = myMail.Parent.folders("test")
    'myMail.Move myDestFolder
     
    End If
    Set myMail = Nothing
    Set olNS = Nothing
    fin:
    End Sub

  15. #15
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    J'ai tésté ton code et il n'a pas fonctionné, je me sens un peu nul

  16. #16
    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
    c'est à dire ? as tu esayé en pas à pas ?

  17. #17
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    J'ai finalement modifié par un autre code et dans ma tête quand on arrive à l'enregistrement des pièces jointes, je place mon if qui dit que pour une piecejointe.filename different de .jpg , then on execute le code. Est-ce que je me trompe ?

    le code (pas fonctionnel pour une raison qui m'est inconnue (la requete fonctionne, mais j'ai toujours des jpg png ...)) :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub SaveAttachment()
     
    'Declaration
    Dim myItems, myItem, myAttachments, myAttachment As Object
    Dim myOrt As String
    Dim myOlApp As New Outlook.Application
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
    Dim i As Integer
     
    'Boîte de dialogue simple pour le chemin de sauvegarde
    myOrt = InputBox("Destination", "Save Attachments", "C:\Users\pavot.cyprien1e\Documents\flac\")
     
    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 myAttachments = myItem.Attachments
    If myAttachments.Count > 0 Then
    'Ajoute une remarque dans le corps du message
    myItem.Body = myItem.Body & vbCrLf & _
    "pièce jointe enlevée:" & vbCrLf
     
    'for all attachments do...
    For i = 1 To myAttachments.Count
    If myAttachments.FileName <> "*.jpg" Or myAttachments.FileName Like "*.png" Then
    'save them to destination
    myAttachments(i).SaveAsFile myOrt & _
    myAttachments(i).DisplayName
    myItem.Body = myItem.Body & _
    "File: " & myOrt & _
    myAttachments(i).DisplayName & vbCrLf
    End If
    Next i
     
     
    End If
     
    Next
    Set myItems = Nothing
    Set myItem = Nothing
    Set myAttachments = Nothing
    Set myAttachment = Nothing
    Set myOlApp = Nothing
    Set myOlExp = Nothing
    Set myOlSel = Nothing
     
    End Sub

  18. #18
    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,
    ton test n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If myAttachments.FileName <> "*.jpg" Or myAttachments.FileName Like "*.png" Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If NOT UCASE(myAttachments.FileName) like "*.JPG" AND NOT UCASE(myAttachments.FileName) Like "*.PNG" Then
    il faut respecter les MAJUSCULES

  19. #19
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 3
    Points
    3
    Par défaut
    Malgré ta modification, les jpg et les pngs sont encore présent, cela doit venir du "*.JPG" non ?

  20. #20
    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
    je n'avais pas vérifié tes déclarations de variable et l'usage de ON ERROR RESUME NEXT fait que tu n'as pas de remonté d'erreur.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If NOT UCASE(myAttachments(i).FileName) like "*.JPG" AND NOT UCASE(myAttachments(i).FileName) Like "*.PNG" Then
    il faut respecter les MAJUSCULES[/QUOTE]

Discussions similaires

  1. problème sur une macro pour une conversion en VB6.3
    Par Zoldick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 14h41
  2. problème sur la feuille après execution de la macro
    Par vacknov dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2007, 08h16
  3. [URL Rewriting] problème sur une règle
    Par Mike91 dans le forum Apache
    Réponses: 1
    Dernier message: 13/09/2007, 16h20
  4. Réponses: 8
    Dernier message: 27/07/2007, 17h06
  5. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24

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