Bonjour
Il faut voir ce que tu souhaites obtenir...
Avec MSQuery, ta requête est présente sur une feuille de calcul et tu peux la mettre à jour, par clic droit dans la zone de résultat de la requête, ou par VBA. Mais tu ne gardes alors pas d'historique de la requête. Les données sont mises à jour avec la base de données et tu perds les anciens résultats.
Par clic droit puis "propriétés de la requête", tu peux déterminer les paramètres de mise à jour (à l'ouverture, toutes les x minutes, ...). Par ce biais, tu peux également nommer ta requête, ce que je te conseille.
Normalement, on n'a qu'une requête MSQuery par feuille, et le code VBA pour la mise à jour est
ObjetFeuille.Querytables(1).Refresh
ou bien
ObjetFeuille.Querytables("NomRequete").Refresh
si tu as nommé ta requête.
Si tu souhaites garder chaque résultat dans un onglet différent, tu as plusieurs possibilités.
Tu peux par macro copier la feuille initiale possédant la requête et mettre la nouvelle feuille à jour. Il faut alors désactiver les mises à jour paramétrées et, pour éviter la mise à jour intempestive, supprimer le nom de la requête sur la chaque feuille créée après la mise à jour. Tu as ainsi un "modèle" de feuille avec la requête, requête qui est supprimée lors de la suppression du nom... Suis-je clair?
Une autre possibilité est de travailler directement en DAO, en renvoyant alors les données du recordset récupéré sur une feuille excel.
Dis-nous par quel bout tu souhaites prendre le problème...
Partager