[XL] Problèmes pour afficher dans nouveau classeur les résultats de ma requête

Résolu
akr54 Messages postés 2 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 8 avril 2010 - 15 mars 2010 à 15:58
akr54 Messages postés 2 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 8 avril 2010 - 8 avril 2010 à 09:36
Hello World !
Voici ce qui m'amène : depuis un classeur principal où j'ai mon code VBA, je cherche à lancer une requête pour récupérer des informations d'une base ORACLE vers un nouveau classeur. Ça fonctionne sans problèmes si j'exécute le code séquentiellement depuis mon projet VBA. Mais lorsque je lie le lancement de la requête à un bouton du classeur principal, les données ne sont pas rafraîchies et ne sont pas affichées. En cellule A1, au lieu d'avoir un en-tête de colonne, j'ai DonnéesExternes_1.lecture des données.
L'affichage ne se fait qu'au sortir du code. Si j'applique des points particuliers à mes résultats, ils ne sont pas pris en compte.
Si je décide d'enregistrer mon nouveau classeur au moyen d'un ActiveWorkbook.SaveAs Filename:= etc., j'ai le message suivant : Cette action va annuler une commande d'actualisation des données. Voulez-vous continuer ?
Or je ne veux pas de cette intervention extérieure. Je veux tout simplement exporter les résultats de ma requête vers un nouveau classeur, l'enregistrer et terminer ainsi.
Autrement dit, pourquoi l'exécution du code lancer manuellement fonctionne-t-il parfaitement, mais ne dysfonctionne si elle est faite depyuis un bouton ?

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 mars 2010 à 20:01
Salut
A première vue, si les données ne s'affichent pas et qu'il te dit que la requète va être interrompue, c'est qu'elle ne doit pas être clôturée correctement.
Vérifie si tu as bien déchargé les objets ou refermé la connexion ou autre.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
akr54 Messages postés 2 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 8 avril 2010
8 avril 2010 à 09:36
Merci Jack !
En effet c'était bien un problème de connexion non fermée : encore merci de m'avoir mis sur la voie.
Il s'agissait pour mon cas d'ajouter "false" à Refresh(false). Il me semblait pourtant avoir essayé mais l'essentiel est là, et ça fonctionne.
Voici donc le code pour requêter facilement une base ORACLE directement depuis EXCEL via ODBC :
Dim sqlstring as String
sqlstring = "select..."
connecstring "ODBC;DSN toto;UID = toto;PWD = toto"
With ActiveSheet.QueryTables.Add(Connection := connecstring, _
   Destination := Range("A1"), Sql :=  sqlstring)
   .Refresh(false)
End With


Sujet clos.
0
Rejoignez-nous