Mixage de 2 programmes VBA en un (Outlook / Excel)

Caape

XLDnaute Nouveau
Bonjour
Explication rapide : Statistique par mail avec graphique sous Excel.

Détail :
Je reçois par mail, 4 à 6 fois par jour, des données formatées.
j’exécute une macro sous Outlook qui me crée un fichier CSV.
J'ouvre ce fichier CSV avec Excel puis j'exécute une autre macro qui me formate, tri, ... mes données et me crée mes graphiques.
Tout ça fonctionne très bien mais est fastidieux à utiliser (plusieurs fois par jours)

Solution que j'ai trouvé :
Rassembler les deux macros en une seul.
Dans Outlook, je lance une macro qui me charge Excel, me remplie mes feuilles comme il faut et trace mes graphiques.

Requête:
Avez vous une méthode ou un tuto sur la façon de faire ça sans devoir trop modifier mon code VBA Excel?

Merci

Caape
 

Caape

XLDnaute Nouveau
Re : Mixage de 2 programmes VBA en un (Outlook / Excel)

Je réponds à moi même.

J'ai bêtement copier le module du VBA d'Excel dans le VBA d'Outlook.
j'ai ajouter une SUB qui charge ou qui lance Excel, qui crée un nouveau WorkBook et une nouvelle feuille (j'efface les autres feuilles en faite). et je fait un appelle a la SUB du nouveau module.
Aprés avoir modifier UNE seule fonction qui utilisait le WorkBook, tout marche comme avant.

Enfin comme avant mais en beaucoup plus lent. Au moins 100 fois plus lent et même plus. C'était quasi instantanée avant et maintenant, je pourrais presque lire les cellules en même temps qu'elles s'affichent.

Je n'ai plus qu'a tester des que je pourrais sur les presque 850 mails a traiter. je vais surement ajouter un filtre sur la date de reception pour ne pas traiter les mails trop vieux.

Merci
Caape

PS:
Mon code pour lancer Excel depuis Outlook
Code:
Sub LancerExcel()
'Lance Excel avec un nouveau document et une seul feuille
    Dim I As Integer
    
On Error Resume Next
    Err.Clear
    Set xlApp = GetObject(, "Excel.Application")            'Recherche si une instance d'excel tourne deja
    If Err.Number <> 0 Then
        Set xlApp = CreateObject("Excel.Application")       'Si non, on la crée
        Err.Clear
    End If
On Error GoTo 0
    xlApp.Visible = True                                    ' Rendre Excel visible
    Set xlBook = xlApp.Workbooks.Add                        ' on cré un nouveau XLS
    Set xlSheet = xlBook.Worksheets(1)                      ' On selectionne la 1ere feuille
    xlSheet.Cells(1, 1).Select                              ' On se place en A1
    For I = 2 To xlBook.Sheets.Count                        'On efface les autres feuilles
        xlBook.Sheets(2).Delete
    Next I
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado