Bonjour,

Je cherche de l'aide sur le problème suivant: dans le cadre de mon travail je suis amené à coder sur VBA un outil qui me permet de retranscrire sur Excel l'intégralité des mails reçus par mon service au cours d'une semaine, pour en extraire des informations utiles à un reporting interne.

Pour ce faire j'ai créé une procédure qui retranscrit dans un classeur excel, dans un tableau la date de réception du mail, son objet, son corps... dans des colonnes distinctes.
Dans une deuxième procédure je dois entre autres choses parcourir les corps de mails précédemment récupérés. Seulement voilà, pour standardiser les mails il a été décidé de tous les faire débuter avec un tableau comme visible en PJ, et c'est justement récupérer les informations dans ce tableau qui me pose problème :

Nom : maquette tab reporting.PNG
Affichages : 241
Taille : 5,3 Ko

Ma façon de voir le problème était de parcourir le corps du mail jusqu'à rencontrer la première case du tableau puis d'incrémenter un compteur qui nous permets de savoir quand on atteint la ligne d'intérêt dans le tableau qu'on récupère dans une variable tableau VBA, les noms de variables sont modifiées dans le code ci dessous pour des raisons de confidentialité :

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
Function lecture_mail(mail As Variant) As Variant
 
    Dim tableau As Integer
    Dim validation As Integer
    Dim tabl(1 To 9) As String
    Dim test As Variant
 
    ' Séparation du corps du mail par des retours chariot
    test = Split(mail, Chr(10))
 
    ' Débogage si le système est erroné dans une nouvelle demande
    ' MsgBox (mail)
 
    For i = 0 To (UBound(test) - 1)
        Application.WorksheetFunction.Trim (test(i))
    Next i
 
    ' Recherche du Système pour détecter le debut tableau (Cat1,Cat2,Cat3,Cat4...)
    ' Il y a une validation, il faut que le mot système et Produit apparaissent avant le nom du système
    tableau = 0
    validation = 0
 
    While (test(tableau) <> ("Cat1" & Chr(13)) And test(tableau) <> ("Cat2" & Chr(13)) And test(tableau) <> ("Cat3" & Chr(13)) _
        And test(tableau) <> ("Cat4" & Chr(13)) And test(tableau) <> ("Cat5" & Chr(13)) And test(tableau) <> ("Cat6" & Chr(13)) _
        And test(tableau) <> ("Cat7" & Chr(13)) And test(tableau)<> (Chr(160) & "Cat8" & Chr(13)) Or validation < 2) _
        And test(tableau) <> ("Cat9" & Chr(13)) And test(tableau) <> ("AUTRE" & Chr(13)) _
        And tableau <= (UBound(test) - 1)
 
        If test(tableau) = ("A" & Chr(13)) Or test(tableau) = ("B" & Chr(13)) _
                                                Or test(tableau) = ("C" & Chr(13)) Then
            validation = validation + 1
        End If
 
        tableau = tableau + 1
    Wend
 
    If validation >= 2 Then
 
        ' Récupération des informations dans le tableau (A / B / C / D /
        ' E / F/ G)
        For i = 1 To 9
            tabl(i) = test(tableau + (i - 1) * 2)
          Next i
    Else
        For i = 1 To 9
            tabl(i) = ""
        Next i
    End If
 
    lecture_mail = tabl
End Function
Cependant cette façon de procéder ne semble pas fonctionner et je ne vois pas où se trouvent mes erreurs.
Je vous remercie d'avance pour votre aide