Requetes SQL dans Excel

  • Initiateur de la discussion Initiateur de la discussion Yo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

Yo

Guest
Bonjour,
voici mon petit problème (désolé si le message est long):
J'ai un classeur Excel qui contient 8 feuilles avec
chacune un tableau. Les 3 premiers tableaux sont remplis
grâce à des Requetes effectuées avec MSQuery et servent de
base de calcul aux autres tableaux.
Au total cela fait environ 114 requêtes MSquery et le
travail n'est pas terminé.
C'est là que le problème commence ; je n'ai pas envie de
remettre à jour mes cellules une par une en cliquant
sur 'Actualiser les données' 114 fois et c'est pour ça que
Microsoft a eu la bonne idée de mettre un
bouton 'Réactualiser Tout'.
Donc pour mettre à jour tout le classeur lorsque je le
désire je clique sur le dit bouton et au bout d'un certain
temps (je n'arrive pas à définir quelle requêtes) Excel me
met une erreur du type : [Microsoft][Pilote ODBC Microsoft
Access] Trop de tâches client.
puis : [Microsoft][Gestionnaire de pilotes ODBC] Echec
SQLSetConnectAttr du pilote
Après il y a tout le temps des erreurs puis seulement la
moitié des requêtes se mettent à jour.

Je crois comprendre par cette erreur que la classeur fait
trop de connexions à ma base de données Access et comme
j'utilise le même fichier Access pour toutes mes requêtes,
n'existe-t-il pas un moyen de faire référence à cette base
une fois pour toute et que les requêtes s'exécutent à
partir de l'ouverture ODBC déjà effectuée une fois??? Ou
existe-t-il une solution concrète pour palier ce problème?

En vous remerciant d'avance.

Yo.
 
Salut Yo,

Je viens de te lire dans le MPFE !, je pense que tu auras plus de succès par làbas...

De mon coté je n'utilise pas msquery sur access , mais un AS400 et DataSelect pour faire des requête SQl, et par conséquent je ne connais pas ton problème.


Bonne Chance
@+Thierry
 
bonjour

j'avais eu un problème similaire
il faudrait boucler plutôt sur la collection querytables de chaque feuille du classeur, et demander la rafraîchissement de chacune avec un "doevents", cette dernière méthode permet de donner la main sau système et d'attendre qu'il est fini de travailler.

il faudrait que je retrouve comment j'avais fait.
mais bon là je pars en vacances

donc je vais me faire encore plus rare quelques temps ;-)
bye
stephane
 
Sub MiseAJour()

'maj des queries
For Each she In ActiveWorkbook.Sheets
she.Select
If ActiveSheet.QueryTables.Count > 0 Then
For Each tbl In she.QueryTables
tbl.Refresh
Next tbl
End If

'maj des tcd

For Each tcd In she.PivotTables
tcd.Refresh
Next tcd
Next she
End Sub

peut-être faut-il placer un doevents

bye
 
Bonnes Vacances STéphane

Bonnes Vacances STéphane

Qu'elles soient longues et dûres !!!

à bientot sur le Forum

@+Thierry


PS pour Yo, la réponse de Denis semble pas mal non plus

Objet: Re: Echec Requetes SQL dans Excel
De: "michdenis"

Bonjour Yo,


As-tu essayé quelque chose du genre : Cette procédure devrait mettre à jour toutes tes requêtes.

Tu dois définir la variable ARR avec les noms des feuilles contenant tes requêtes.

(pas testé)
'-------------------------------
Sub MiseAjourQueryTable()

Dim Qt As QueryTable, Arr()

Arr = Array("Feuil1", "Feuil2", "Feuil3") 'à déterminer

With ThisWorkbook
For Each elt In Arr
For Each Qt In .Worksheets(elt).QueryTables
Qt.Refresh False
Next
Next
End With

End Sub
'-------------------------------


Salutations!
 
Oui j'ai vu sa réponse sur le MPFE hier soir et je l'ai testé. Je me ressort une erreur d'exécution '9' type "l'indice n'appartient pas à la sélection"pour la ligne
For Each Qt In .Worksheets(elt).QueryTables

Je ne vois pas d'où cela peut provenir...
En ce qui concerne le code de Stephane, il y avait juste à corriger une toute petite erreur lors du Refresh, mais l'ensemble fonctionne tout à fait correctement (du moins j'espère car je ne sais réellement si toutes les requêtes ont bien pris en compte le changement de la base ; mais je vais tester avec une base vide et voir si tout revient à 0)

Si pour le code de Michdenis tu as une suggestion pour que cela fonctionne... je suis à l'écoute.
 
Gros Mea culpa :
le code de Denis fonctionne impeccablement aussi.
J'avais fait une erreur lors de la définition du tableau avec le nom des feuilles. Le résultat est aussi bon dans les deux cas avec un léger plus pour Stephane qui met à jour aussi les tableau croisés dyna.
Le doevents n'est nécessaire que si l'opération est vraiment trop longue à être traité ce qui peut s'avérer être possible dans mon cas avec mes 9 tables de 35000 lignes chacune...
On pourrait donc aussi l'appliquer au code de Denis lors de la MAJ des requetes.

Sinon merci à vous pour votre aide, c'est super.

Yo
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Requête sql
Réponses
1
Affichages
531
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Retour