Bonjour à toutes et à tous !

Je ne suis pas encore très doué en VB mais je progresse. Alors voilà, j'ai écrit deux macros qui fonctionnent toutes les deux. C'est plutôt rassurant, mais c'est au moment de les "combiner" qu’apparaît mon "problème".

Ma première macro, (nous allons l'appeler "TéléchargementNouvelleExtraction") se connecte à mon compte sur un site web, et va extraire un fichier spécifique en fonction des données rentrées dans le formulaire. Lors du téléchargement de ce fichier j'utilise l'option : enregistrer et ouvrir :
Nom : help.png
Affichages : 117
Taille : 19,2 Ko




Ma seconde macro (nous allons l'appeler "RemplissageAutomatique")se charge de copier des données dans ce nouveau fichier .xls qui est censé s'enregistrer s'ouvrir, puis colle les données dans le fichier principal. Ce fichier .xls peut prendre différents noms en fonction du nombre de téléchargements. Même si les données sont complètement différentes celui-ci gardera la même nomenclature mais s’incrémentera de 1, exemple :

Nom : help2.png
Affichages : 125
Taille : 5,7 Ko.

J'utilise donc l'application "ActiveWorkbook" pour récupérer les données du classeur qui vient d'être ouvert.


Le problème arrive à la fin du code de la macro "TéléchargementNouvelleExtraction" : le fichier .xls nouvellement téléchargé ne s'ouvre qu'une fois le code terminé. L'appel de ma macro "RemplissageAutomatique" se fait alors sur le mauvais fichier.

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
 
'EXTRAIT DE LA FIN DE LA MACRO "TéléchargementNouvelleExtraction"
 
'Enregistrement et ouverture du fichier
SendKeys ("{ENTER}")
 
Application.Wait (Now + TimeValue("00:00:02"))
 
RetVal = Shell("Taskkill /im iexplore.exe /f", 0)
End
 
Call remplissageauto
 
End Sub
 
'L'ouverture du excel se fait a ce moment la.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub remplissageauto()
 
nom = ActiveWorkbook.Name
 
Workbooks(nom).Worksheets("Planif. des contrôles").Activate
    Range("A8:O2000").Select
    Selection.Copy
    Windows("Plannification controle réglementaire ASCENSEURS.xlsm").Activate
    ActiveSheet.Paste Range("A8:O2000")
 
'....
(Je m'excuse si ce n'est pas la manière la plus simple de "coder" ce que je veux faire !)

Y a-t-il un moyen pour ouvrir ce Excel avant la fin du programme ? Ou de lancer ma deuxième macro a la suite de la première ? Merci d'avance !