Bonjour,
Peut-on actualiser un classeur fermé qui contient des données externes?
sans l'ouvrir bien sûr.
Version imprimable
Bonjour,
Peut-on actualiser un classeur fermé qui contient des données externes?
sans l'ouvrir bien sûr.
Pour l'actualiser il faudra l'ouvrir.
En quoi ca te genes de l'ouvrir?
En fait, moi ce que je cherche c'est de faire une tâche planifiée, qui va récupérer à un instant (T) des données dans le classeur après que ce dernier soit actualisé,
ces données seront inclus dans un mail (outlook).
Il faudra que l'application, appelée par les taches planifiées, ouvre le fichier excel (de façon visible ou pas), fasse une mise a jour et l'enregistre
et quel genre d'application fait ça?
c'est a toi de la faire.
Que pensais tu lancer a l'execution de la tache planifiée?
quand la tâche planifiée est éxécutée par exemple:
étape 1: ouverture du fichier excel, actualiser le fichier et l'enregistrer.
étape2: récupération des valeurs de certaines cellules
étape 3: création d'un mail où ces valeurs sont incluses
étape 4 : envoi du mail à une adresse spécifique.
voilà!
Comme ca, ca me parait correct :king:
Je m'y attendais pas à recevoir une telle réponse de jérôme mais bon.
Je suis coincé là, t'as une idée de départ, je suis dans le désarroi là.
code a mettre dans l'evenement open d'un classeur que tu lanceras avec les taches planifiées
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Dim App As New Excel.Application Dim wrk As Workbook App.Visible = False Set wrk = App.Workbooks.Open("d:\FichierDonnées.xls") wrk.Sheets("donnees").Select App.Selection.QueryTable.Connection = App.Selection.QueryTable.Connection & ";pwd=password" App.Selection.QueryTable.Refresh BackgroundQuery:=False '... Code generant le mail wrk.Close True App.Quit
Jérôme cette partie du code, elle marche pas.Code:
1
2 App.Selection.QueryTable.Connection = App.Selection.QueryTable.Connection & ";pwd=password" App.Selection.QueryTable.Refresh BackgroundQuery:=False
en fait quand le fichier sera ouvert, toutes les querytable de toutes les feuilles du classeur doivent être mis à jour.
Question bete, mais as tu remplacé password par ton mot de passe.
Et si tu es en connexion approuvé, tu n'as pas besoin de la premiere ligne
ce n'est pas une question bête loin de là.
je suis en connexion approuvée mais ça marche pas
et j'ai enlevé la première ligne :)
Peux tu envoyer ton code et la ligne qui pose probleme
c cette ligne qui génère l'erreur.Code:App.Selection.QueryTable.Refresh BackgroundQuery:=False
erreur d'exécution 1004 "erreur définie par l'application ou l'objet"
Et le code qui est avant?
voilà le codeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 sub fff () Dim App As New Excel.Application Dim wrk As Workbook App.Visible = False Set wrk = App.Workbooks.Open("....") wrk.Sheets("Feuil1").Select App.Selection.QueryTable.Refresh BackgroundQuery:=False wrk.Close True App.Quit End sub
regardes si en lancant un enregistreur de macro sur le clic droit mise a jour des données, le code généré est identique au mien (querytable)
Peut être y a t'il une différence dans le cas d'une connexion approuvée
j'ai enlevé App de ce code ("ya plus d'erreur")Code:App.Selection.QueryTable.Refresh BackgroundQuery:=False
par contre le classeur ne se ferme pas.Code:App.Selection.QueryTable.Refresh BackgroundQuery:=False
normalement ,le querytable ne fonctionne pas si tu retires le app(au niveau de la macro) car le classeur wrk est ouvert dans app.
Si tu lance queytable sans app ca met a jour le classeur de lancement
D'où vient donc l'erreur et quel est l'intérêt d'ouvrir wrk dans une app
L'interet était de pouvoir cacher l'application lors de son execution.
tu peux aussi ne pas ouvrir wrk dans une autre application. C'est un choix a faire
Ben en fait moi jve la cacher justement, mais là ça marche pas, on retourne à la case départ.
as-tu testé le code?
le code fonctionne bien chez moi avec un classeur qui a besoin du mot de passe.
Peux-tu m'expliquer ta procédure?
où t'as mis exactement la procédure.
sachant que ma question de départ était de faire une tâche planifié.
donc on peux ouvrir le fichier à un instant (T), en exécutant seulement
"c:\Program Files\Microsoft\Office10\excel.exe" "c:\blabla.xls"
mais le pbm c que le fichier restera ouvert. ce que je veux éviter.
je te joint mon fichier.
Pour avoir le code n'accepte pas les macros car la procedure se lance des l'ouverture du fichier
Pièce jointe 17648