Lancer toutes les connexions "ActiveWorkbook.Connections"
Résolu/Fermé
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
-
21 nov. 2017 à 19:16
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 30 nov. 2017 à 09:12
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 30 nov. 2017 à 09:12
15 réponses
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
Modifié le 21 nov. 2017 à 19:36
Modifié le 21 nov. 2017 à 19:36
je pense que ceci va le faire pour tout le classeur dans lequel se trouve le code:
il est possible de l'adapter si cela doit être fait sur d'autres classeurs.
Dim ws As Worksheet Dim qt As QueryTable For Each ws In ThisWorkbook.Worksheets For Each qt In ws.QueryTables qt.Refresh Next qt Next ws
il est possible de l'adapter si cela doit être fait sur d'autres classeurs.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
21 nov. 2017 à 20:39
21 nov. 2017 à 20:39
Bonsoir yg_be,
Merci pour ton aide, j'ai mis le code dans un module et celui ne fonctionne pas.
j'ai rajouté
Sub
end sub
j'ai oublié qq chose ?
Merci pour ton aide, j'ai mis le code dans un module et celui ne fonctionne pas.
j'ai rajouté
Sub
end sub
j'ai oublié qq chose ?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
21 nov. 2017 à 21:06
21 nov. 2017 à 21:06
"ne fonctionne pas" = ?
et ainsi?
et ainsi?
Sub refreshallqt() Dim wb As Workbook Dim ws As Worksheet Dim qt As QueryTable Dim nqt As Integer, tnqt As Integer Set wb = ThisWorkbook MsgBox "Il y a " & CStr(wb.Connections.Count) & " connection(s) dans le fichier " & wb.Path tnqt = 0 For Each ws In wb.Worksheets nqt = 0 For Each qt In ws.QueryTables qt.Refresh nqt = nqt + 1 Next qt If nqt > 0 Then MsgBox CStr(nqt) & " refresh dans " & ws.Name End If tnqt = tnqt + nqt Next ws MsgBox "On a fait " & CStr(tnqt) & " refresh dans le fichier " & wb.Path End Sub
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
21 nov. 2017 à 21:12
21 nov. 2017 à 21:12
ou ainsi?
Sub refreshallcn() Dim wb As Workbook Dim cns As Connections Dim cn As WorkbookConnection Set wb = ThisWorkbook Set cns = wb.Connections For Each cn In cns cn.Refresh Next cn End Sub
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
21 nov. 2017 à 21:49
21 nov. 2017 à 21:49
Merci yg_be
Le 2eme code fonctionne, mais comment je peux mettre une temporisation de 3 minutes le temps que le connexion finisse, car j'ai mis cette macro dans ma boucle avec appel du module avant ma boucle.
Hum je ne sais pas si c'est bien clair...
Le 2eme code fonctionne, mais comment je peux mettre une temporisation de 3 minutes le temps que le connexion finisse, car j'ai mis cette macro dans ma boucle avec appel du module avant ma boucle.
Hum je ne sais pas si c'est bien clair...
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
21 nov. 2017 à 22:25
21 nov. 2017 à 22:25
et ainsi?
Dim ws As Worksheet Dim qt As QueryTable For Each ws In ThisWorkbook.Worksheets For Each qt In ws.QueryTables qt.BackgroundQuery = False qt.Refresh Next qt Next ws
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
22 nov. 2017 à 08:41
22 nov. 2017 à 08:41
Bonjour yg_be,
Merci pour ton code.
BackgroundQuery = False
permet d'attendre l'actualisation et après la boucle va démarrer, si j'ai bien compris ?
Je viens de faire un essai, mais l'actualisation ne se fait pas.
Merci pour ton code.
BackgroundQuery = False
permet d'attendre l'actualisation et après la boucle va démarrer, si j'ai bien compris ?
Je viens de faire un essai, mais l'actualisation ne se fait pas.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
22 nov. 2017 à 09:28
22 nov. 2017 à 09:28
peux-tu partager ton fichier?
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
22 nov. 2017 à 10:50
22 nov. 2017 à 10:50
Tu vas encore prendre peur ...
Merci pour ton aide.
https://www.cjoint.com/c/GKwjWS4mrFX
Merci pour ton aide.
https://www.cjoint.com/c/GKwjWS4mrFX
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
22 nov. 2017 à 11:12
22 nov. 2017 à 11:12
Fichier avec les modules que je souhaite mettre avant ma boucle, tout comme module1.creerlien
https://www.cjoint.com/c/GKwkj1BMiSX
https://www.cjoint.com/c/GKwkj1BMiSX
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
22 nov. 2017 à 21:25
22 nov. 2017 à 21:25
je propose ceci (pas vraiment testé):
Sub refreshallcn() Dim wb As Workbook Dim cns As Connections Dim cn As WorkbookConnection Set wb = ThisWorkbook Set cns = wb.Connections For Each cn In cns If Not IsEmpty(cn.ODBCConnection) Then cn.ODBCConnection.BackgroundQuery = False cn.ODBCConnection.Refresh Else cn.Refresh End If Next cn End Sub
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 nov. 2017 à 19:54
23 nov. 2017 à 19:54
Bonsoir yg_be,
J'ai fait des essais, mais je ne sais pas si le code démarre pendant l'actualisation, je ne sais pas comment le voir ?
Bonne soirée.
J'ai fait des essais, mais je ne sais pas si le code démarre pendant l'actualisation, je ne sais pas comment le voir ?
Bonne soirée.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
23 nov. 2017 à 20:04
23 nov. 2017 à 20:04
hier matin, tu écrivais "l'actualisation ne se fait pas".
l'actualisation se fait-elle maintenant?
l'actualisation se fait-elle maintenant?
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 nov. 2017 à 20:18
23 nov. 2017 à 20:18
Bonsoir yg_be,
Oui le dernier fais bien l'actualisation, mais je ne sais pas comment être sur qu'il soit bien fini avant le démarrage de la boucle et je ne sais pas comment je peux le contrôler.
Oui le dernier fais bien l'actualisation, mais je ne sais pas comment être sur qu'il soit bien fini avant le démarrage de la boucle et je ne sais pas comment je peux le contrôler.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 nov. 2017 à 20:29
23 nov. 2017 à 20:29
Comment je peux mettre un Msgbox pour me dire module5.actualisation fini et un autre pour me dire module2.effaceleslignes commence, comme ça je vois si cela se fait l'un après l'autre.
Ça vaut quoi cette idée ?
Ça vaut quoi cette idée ?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
23 nov. 2017 à 21:44
23 nov. 2017 à 21:44
je ne vois pas trop comment deux sub pourraient tourner en même temps.
je pense que tu veux vérifier que l'actualisation ne se fait pas en arrière-plan, en parallèle avec l'exécution des sub.
ne peux-tu pas te convaincre sur base du temps pris par l'exécution de la sub d'actualisation? ou bien elle va très vite, car elle ne fait presque rine, ou bien elle est ralentie par chaque refresh.
je pense que tu veux vérifier que l'actualisation ne se fait pas en arrière-plan, en parallèle avec l'exécution des sub.
ne peux-tu pas te convaincre sur base du temps pris par l'exécution de la sub d'actualisation? ou bien elle va très vite, car elle ne fait presque rine, ou bien elle est ralentie par chaque refresh.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 nov. 2017 à 21:53
23 nov. 2017 à 21:53
oui c'est ça :
je veux vérifier que l'actualisation ne se fait pas en arrière-plan, en parallèle avec l'exécution des sub.
je veux vérifier que l'actualisation ne se fait pas en arrière-plan, en parallèle avec l'exécution des sub.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
23 nov. 2017 à 21:55
23 nov. 2017 à 21:55
ne peux-tu pas te convaincre sur base du temps pris par l'exécution de la sub d'actualisation? ou bien elle va très vite, car elle ne fait presque rien, ou bien elle est ralentie par chaque refresh.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 nov. 2017 à 21:57
23 nov. 2017 à 21:57
heu je ne comprends pas ta question ?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
25 nov. 2017 à 10:24
25 nov. 2017 à 10:24
tu te demandes en fait si chaque commande refresh attend que l'actualisation soit finie, ou bien si le code continue et que l'actualisation se fait en parallèle avec l'exécution du code. c'est bien cela?
ne peux-tu pas vérifier cela simplement en regardant si le code s'exécute très vite, ou bien si il prend beaucoup de temps?
ne peux-tu pas vérifier cela simplement en regardant si le code s'exécute très vite, ou bien si il prend beaucoup de temps?
thev
Messages postés
1852
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
23 avril 2024
681
Modifié le 24 nov. 2017 à 09:38
Modifié le 24 nov. 2017 à 09:38
Bonjour Pascalou93400,
je pense que tu devrais insérer l'instruction "Doevents" après le lancement de l'actualisation. Cette instruction devrait suspendre l'exécution du code tant que l'actualisation n'est pas terminée.
je pense que tu devrais insérer l'instruction "Doevents" après le lancement de l'actualisation. Cette instruction devrait suspendre l'exécution du code tant que l'actualisation n'est pas terminée.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
30 nov. 2017 à 09:12
30 nov. 2017 à 09:12
Bonjour yg_be,
Merci pour ton code, j'ai fini par le mettre à part pour le faire tourner, car je pense qu'il empiétait sur le code.
Bonne journée.
Pascal
Merci pour ton code, j'ai fini par le mettre à part pour le faire tourner, car je pense qu'il empiétait sur le code.
Bonne journée.
Pascal