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 :

Erreur d'exécution 440 Index de la matrice en dehors des limites [OL-2016]


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Homme Profil pro
    Que pour le plaisir
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Que pour le plaisir

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut Erreur d'exécution 440 Index de la matrice en dehors des limites
    Bonjour,

    Etant très débutant en VBA, j'ai recopié cette macro mais j'ai une erreur comme indiqué dans le titre. L'erreur se produit sur la ligne que j'ai mis en rouge :
    Set PJ = MonCourrier.Attachments(i) (ligne 23)

    Mon but est d'enregistrer tout les jours automatiquement 3 fichiers toujours du même noms (en écrasant ceux de la veille) reçu toujours du même destinataire (envoyé par macro auto que j'ai créer).

    Si quelqu'un pourrais m'aider, ou me donner un code plus simple

    Merci d'avance et bonne nuit
    Dom

    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
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim NS As NameSpace
    Dim MonCourrier As MailItem
    Dim NomFichier As String
    Dim NbPJ As Integer
    Dim i As Integer
    Dim j As Integer
    Dim NomPj As String
    Dim PJ As Attachment
    Const Dossier As String = "C:\Users\Home\Documents\Essai"
    Dim varEntryIDs
    Dim objItem As Object
    Set NS = GetNamespace("MAPI")
    varEntryIDs = Split(EntryIDCollection, ",")
    For i = 0 To UBound(varEntryIDs)
      Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
      If TypeName(objItem) = "MailItem" Then
        'Pour profiter de l'intellisense
        Set MonCourrier = objItem
        If MonCourrier.SenderEmailAddress = "XXXXXX@gmail.com" Then
          NbPJ = MonCourrier.Attachments.Count
           For j = NbPJ To 1 Step -1
           Set PJ = MonCourrier.Attachments(i)
            ' recopier et supprimer
            NomFichier = PJ.DisplayName
              ' Ecrase le fichier s'il existe déjà
            PJ.SaveAsFile Dossier & NomFichier
            'Si le fichier détaché doit être supprimé, valider la lige suivante
            PJ.Delete
         Next j
        End If ' expéditeur concerné
      Else
      ' ce n'est pas un courriel
      End If
    Next i
    MsgBox "Les Fichiers venant des XXXXXXX ont bien été enregistrés"
    
    End Sub

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    c'est sans doute que le mail n'a pas de pj

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    NbPJ = MonCourrier.Attachments.Count
    if NbPJ > 0 then
           For j = NbPJ To 1 Step -1
           Set PJ = MonCourrier.Attachments(i)
            ' recopier et supprimer
            NomFichier = PJ.DisplayName
              ' Ecrase le fichier s'il existe déjà
            PJ.SaveAsFile Dossier & NomFichier
            'Si le fichier détaché doit être supprimé, valider la lige suivante
            PJ.Delete
         Next j
    end if

    tu peux aussi voir cet exemple complet
    https://www.developpez.net/forums/bl...yperlien-mail/
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  3. #3
    Membre du Club
    Homme Profil pro
    Que pour le plaisir
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Que pour le plaisir

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    Merci , cela aurai pu se faire, mais ce n'est pas le cas.
    J'ai essayé avec un ou plusieurs fichiers, le problème est le même.
    J'ai rajouté le If > 0, mais cela ne change rien, puisque je joins un fichier

    Donc problème non résolu...

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    en fait tu as 2 pb

    le premier qui provoque ton erreur est là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     For j = NbPJ To 1 Step -1
           Set PJ = MonCourrier.Attachments(i)

    il faut utiliser j et pas i

    le second est là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Dossier As String = "C:\Users\Home\Documents\Essai"
    tu dois finir avec un \

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Dossier As String = "C:\Users\Home\Documents\Essai\"

    ps : prend l'habitude de mettre tout en haut de teon module

    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  5. #5
    Membre du Club
    Homme Profil pro
    Que pour le plaisir
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Que pour le plaisir

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut
    Un grand merci Oliv-

    J'avais bien essayé de remplacer le i par le j, mais vus que j'avais une deuxième erreur...

    Enfin maintenant tout fonctionne comme je le voulais, je vais juste rajouter un petit test pour enregistrer que ses 3 fichiers et non le reste

    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2012, 11h01
  2. Réponses: 4
    Dernier message: 15/11/2011, 09h16
  3. Erreur : "L'index se trouve en dehors des limites du tableau"
    Par dotnetnuke dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2009, 17h36
  4. Erreur à l'exécution dans l'Edi mais non en dehors.
    Par defluc dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/06/2007, 15h54
  5. probleme d'index en dehors des limites
    Par sly3333 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/12/2006, 12h30

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