Re : intercepter l'actualisation automatique
Bon j'ai résolu le problème différemment, j'utilise ontime pour déclarer l'heure d'arrêt et la reprise.
En plus, je supprime toutes les requêtes interrogations de la base de données et à la reprise je relance la procédure d'interrogation. C'est prodigieusement propre.
Chose à savoir, dans le cas d'un macro enregistrée et la procédure de suppression des requêtes, les noms à utiliser ne sont pas les mêmes:
Macro - DonnéesExternes_xx ; en fait le nom de la requête
Procédure - "=Feuil1!$A$2:$A" ; en fait le "fait référence à" conserver sur la partie de gauche pour le contrôle, si le nom de la feuille comporte des espaces,mettre celui-ci entre simple quote.
Dans le même élan, j'ai rendu mon programme autonome dans son lancement d'interrogation et son extinction.
Explication : un "Chef" instruit le programme d'une heure de lancement des interrogations, à l'heure dite les interrogations commencent et si il y a lieu des impressions sont émises vers une imprimante. En fin d'utilisation le programme XLS se ferme.
Ainsi je peux prévoir en cours de journée le déclenchement du programme pour une équipe de nuit et à la fin de leur service l'arrêt de celui-ci sans intervention quelconque depuis un PC dans un bureau fermé par exemple ( et l'imprimante à l'extérieur ;-) ).
Sub automatique()
If [Feuil2].hrsdebut.Value = "HH:MM:SS" Then
precedente_requete ' si le champ ne contient pas de valeur mais le format
Else
Application.OnTime TimeValue([Feuil2].hrsdebut.Value), "precedente_requete" ' le champ contient une valeur confirmée
End If
If [Feuil2].hrsarret.Value <> "HH:MM:SS" Then
Application.OnTime TimeValue([Feuil2].hrsarret.Value), "arret_application"
End If
End Sub
Sub arret_application()
UnQueryTable
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
End Sub
A+