Bonjour a tous,
Dans un classeur Excel, j'ai plusieurs tables qui se raffra=EEchissent
depuis Internet, dans diff=E9rents query (qui se trouvent dans
diff=E9rents onglets).
A l'ouverture, j'utilise une macro qui raffra=EEchit donc toutes les
donn=E9es avec la commande:
ThisWorkbook.RefreshAll
Mon souci c'est que la macro continue la suite des instructions sans
attendre la fin du rafra=EEchissement des diff=E9rents query's...
J'ai lu qu'il y avait le param=E8tre :BackgroundQuery:=3DFalse
, mais je ne sais pas comment l'utiliser.
J'ai essay=E9 comme ceci: ThisWorkbook.RefreshAll BackgroundQuery =3D
False
-Mais =E7a veut pas... :-(
Est-ce que quelqu'un pourrait me venir en aide,
Merci d'avance,
Cordialement,
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour.
BackgroundQuery est une propriété de tes tables. Il faut donc, pour chacune d'elles, définir cette propriété à True ou False avant l'actualisation :
Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets For Each qt In ActiveSheet.QueryTables qt.BackgroundQuery = False Next qt
Cordialement. Daniel
Bonjour a tous, Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent depuis Internet, dans différents query (qui se trouvent dans différents onglets). A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les données avec la commande: ThisWorkbook.RefreshAll Mon souci c'est que la macro continue la suite des instructions sans attendre la fin du rafraîchissement des différents query's... J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse , mais je ne sais pas comment l'utiliser. J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False -Mais ça veut pas... :-( Est-ce que quelqu'un pourrait me venir en aide, Merci d'avance, Cordialement,
Emile
Bonjour.
BackgroundQuery est une propriété de tes tables. Il faut donc, pour
chacune d'elles, définir cette propriété à True ou False avant
l'actualisation :
Dim qt As QueryTable, sh As Worksheet
For Each sh In ThisWorkbook.Sheets
For Each qt In ActiveSheet.QueryTables
qt.BackgroundQuery = False
Next qt
Cordialement.
Daniel
Bonjour a tous,
Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent
depuis Internet, dans différents query (qui se trouvent dans
différents onglets).
A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les
données avec la commande:
ThisWorkbook.RefreshAll
Mon souci c'est que la macro continue la suite des instructions sans
attendre la fin du rafraîchissement des différents query's...
J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse
, mais je ne sais pas comment l'utiliser.
J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False
-Mais ça veut pas... :-(
Est-ce que quelqu'un pourrait me venir en aide,
Merci d'avance,
Cordialement,
BackgroundQuery est une propriété de tes tables. Il faut donc, pour chacune d'elles, définir cette propriété à True ou False avant l'actualisation :
Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets For Each qt In ActiveSheet.QueryTables qt.BackgroundQuery = False Next qt
Cordialement. Daniel
Bonjour a tous, Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent depuis Internet, dans différents query (qui se trouvent dans différents onglets). A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les données avec la commande: ThisWorkbook.RefreshAll Mon souci c'est que la macro continue la suite des instructions sans attendre la fin du rafraîchissement des différents query's... J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse , mais je ne sais pas comment l'utiliser. J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False -Mais ça veut pas... :-( Est-ce que quelqu'un pourrait me venir en aide, Merci d'avance, Cordialement,
Emile
Emile63
On 14 abr, 08:53, Emile63 wrote:
Bonjour Daniel et merci pour ton aide.
Apparemment il manquait un petit "Next" à la fin de ta proposition, que j'ai complété comme suit: ----------------------------------------------------------- Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets MsgBox sh.Name For Each qt In ActiveSheet.QueryTables On Error Resume Next MsgBox qt.Name qt.BackgroundQuery = False Next qt Next sh End Sub ----------------------------------------------------------- Bien que j'ai compris le fonctionnement et la finalité, de ta proposition, malheureusement ça fonctionne pas. La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde feuille parcourue, c'est peut-être du au fait que la troisième feuille est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec un: On error resume next Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox pour voir jusqu'ou elle fonctionnait..) Aurais-tu une solution qui permet de passer par dessus les graphiques... ? Merci d'avance, Cordialement,
Emile
On 14 abr, 08:53, Emile63 <sanz.em...@gmail.com> wrote:
Bonjour Daniel et merci pour ton aide.
Apparemment il manquait un petit "Next" à la fin de ta proposition,
que j'ai complété comme suit:
-----------------------------------------------------------
Sub test()
Dim qt As QueryTable, sh As Worksheet
For Each sh In ThisWorkbook.Sheets
MsgBox sh.Name
For Each qt In ActiveSheet.QueryTables
On Error Resume Next
MsgBox qt.Name
qt.BackgroundQuery = False
Next qt
Next sh
End Sub
-----------------------------------------------------------
Bien que j'ai compris le fonctionnement et la finalité, de ta
proposition, malheureusement ça fonctionne pas.
La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde
feuille parcourue, c'est peut-être du au fait que la troisième feuille
est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec
un:
On error resume next
Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox
pour voir jusqu'ou elle fonctionnait..)
Aurais-tu une solution qui permet de passer par dessus les
graphiques... ?
Merci d'avance,
Cordialement,
Apparemment il manquait un petit "Next" à la fin de ta proposition, que j'ai complété comme suit: ----------------------------------------------------------- Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets MsgBox sh.Name For Each qt In ActiveSheet.QueryTables On Error Resume Next MsgBox qt.Name qt.BackgroundQuery = False Next qt Next sh End Sub ----------------------------------------------------------- Bien que j'ai compris le fonctionnement et la finalité, de ta proposition, malheureusement ça fonctionne pas. La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde feuille parcourue, c'est peut-être du au fait que la troisième feuille est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec un: On error resume next Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox pour voir jusqu'ou elle fonctionnait..) Aurais-tu une solution qui permet de passer par dessus les graphiques... ? Merci d'avance, Cordialement,
Emile
Daniel.C
Oups. Essaie :
Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Worksheets For Each qt In sh.QueryTables qt.BackgroundQuery = False Next qt Next sh End Sub
Daniel
On 14 abr, 08:53, Emile63 wrote:
Bonjour Daniel et merci pour ton aide.
Apparemment il manquait un petit "Next" à la fin de ta proposition, que j'ai complété comme suit: ----------------------------------------------------------- Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets MsgBox sh.Name For Each qt In ActiveSheet.QueryTables On Error Resume Next MsgBox qt.Name qt.BackgroundQuery = False Next qt Next sh End Sub ----------------------------------------------------------- Bien que j'ai compris le fonctionnement et la finalité, de ta proposition, malheureusement ça fonctionne pas. La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde feuille parcourue, c'est peut-être du au fait que la troisième feuille est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec un: On error resume next Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox pour voir jusqu'ou elle fonctionnait..) Aurais-tu une solution qui permet de passer par dessus les graphiques... ? Merci d'avance, Cordialement,
Emile
Oups. Essaie :
Sub test()
Dim qt As QueryTable, sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
For Each qt In sh.QueryTables
qt.BackgroundQuery = False
Next qt
Next sh
End Sub
Daniel
On 14 abr, 08:53, Emile63 <sanz.em...@gmail.com> wrote:
Bonjour Daniel et merci pour ton aide.
Apparemment il manquait un petit "Next" à la fin de ta proposition,
que j'ai complété comme suit:
-----------------------------------------------------------
Sub test()
Dim qt As QueryTable, sh As Worksheet
For Each sh In ThisWorkbook.Sheets
MsgBox sh.Name
For Each qt In ActiveSheet.QueryTables
On Error Resume Next
MsgBox qt.Name
qt.BackgroundQuery = False
Next qt
Next sh
End Sub
-----------------------------------------------------------
Bien que j'ai compris le fonctionnement et la finalité, de ta
proposition, malheureusement ça fonctionne pas.
La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde
feuille parcourue, c'est peut-être du au fait que la troisième feuille
est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec
un:
On error resume next
Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox
pour voir jusqu'ou elle fonctionnait..)
Aurais-tu une solution qui permet de passer par dessus les
graphiques... ?
Merci d'avance,
Cordialement,
Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Worksheets For Each qt In sh.QueryTables qt.BackgroundQuery = False Next qt Next sh End Sub
Daniel
On 14 abr, 08:53, Emile63 wrote:
Bonjour Daniel et merci pour ton aide.
Apparemment il manquait un petit "Next" à la fin de ta proposition, que j'ai complété comme suit: ----------------------------------------------------------- Sub test() Dim qt As QueryTable, sh As Worksheet For Each sh In ThisWorkbook.Sheets MsgBox sh.Name For Each qt In ActiveSheet.QueryTables On Error Resume Next MsgBox qt.Name qt.BackgroundQuery = False Next qt Next sh End Sub ----------------------------------------------------------- Bien que j'ai compris le fonctionnement et la finalité, de ta proposition, malheureusement ça fonctionne pas. La (1ere) boucle Worksheet s'arrête avec une erreur a la seconde feuille parcourue, c'est peut-être du au fait que la troisième feuille est un graphique, (j'en ai plusieurs). J'ai essayé de m'en tirer avec un: On error resume next Mais rien n'y fait, la boucle s'arrête là. (J'ai ajouté les msgbox pour voir jusqu'ou elle fonctionnait..) Aurais-tu une solution qui permet de passer par dessus les graphiques... ? Merci d'avance, Cordialement,
Emile
isabelle
bonjour Emile,
en recherchant sur l'aide de la feuille de calcul avec le mot "BackgroundQuery"
on nous propose la rubrique : «Création de macros Visual Basic pour extraire des données externes» au bas de cette rubrique il y a la remarque suivante :
Remarque Lors de l'enregistrement d'une macro comprenant une requête, Microsoft Excel ne peut pas exécuter la requête en arrière-plan, même si vous avez sélectionné cette option. Pour modifier la macro afin qu'elle s'exécute en arrière-plan, modifiez l'instruction "BackgroundQuery := False" en "BackgroundQuery := True" dans l'éditeur Visual Basic.
isabelle
Emile63 a écrit :
Bonjour a tous, Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent depuis Internet, dans différents query (qui se trouvent dans différents onglets). A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les données avec la commande: ThisWorkbook.RefreshAll Mon souci c'est que la macro continue la suite des instructions sans attendre la fin du rafraîchissement des différents query's... J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse , mais je ne sais pas comment l'utiliser. J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False -Mais ça veut pas... :-( Est-ce que quelqu'un pourrait me venir en aide, Merci d'avance, Cordialement,
Emile
bonjour Emile,
en recherchant sur l'aide de la feuille de calcul avec le mot
"BackgroundQuery"
on nous propose la rubrique :
«Création de macros Visual Basic pour extraire des données externes»
au bas de cette rubrique il y a la remarque suivante :
Remarque Lors de l'enregistrement d'une macro comprenant une requête,
Microsoft Excel ne peut pas exécuter la requête en arrière-plan, même si
vous
avez sélectionné cette option. Pour modifier la macro afin qu'elle
s'exécute en
arrière-plan, modifiez l'instruction "BackgroundQuery := False" en
"BackgroundQuery := True" dans l'éditeur Visual Basic.
isabelle
Emile63 a écrit :
Bonjour a tous,
Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent
depuis Internet, dans différents query (qui se trouvent dans
différents onglets).
A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les
données avec la commande:
ThisWorkbook.RefreshAll
Mon souci c'est que la macro continue la suite des instructions sans
attendre la fin du rafraîchissement des différents query's...
J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse
, mais je ne sais pas comment l'utiliser.
J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False
-Mais ça veut pas... :-(
Est-ce que quelqu'un pourrait me venir en aide,
Merci d'avance,
Cordialement,
en recherchant sur l'aide de la feuille de calcul avec le mot "BackgroundQuery"
on nous propose la rubrique : «Création de macros Visual Basic pour extraire des données externes» au bas de cette rubrique il y a la remarque suivante :
Remarque Lors de l'enregistrement d'une macro comprenant une requête, Microsoft Excel ne peut pas exécuter la requête en arrière-plan, même si vous avez sélectionné cette option. Pour modifier la macro afin qu'elle s'exécute en arrière-plan, modifiez l'instruction "BackgroundQuery := False" en "BackgroundQuery := True" dans l'éditeur Visual Basic.
isabelle
Emile63 a écrit :
Bonjour a tous, Dans un classeur Excel, j'ai plusieurs tables qui se raffraîchissent depuis Internet, dans différents query (qui se trouvent dans différents onglets). A l'ouverture, j'utilise une macro qui raffraîchit donc toutes les données avec la commande: ThisWorkbook.RefreshAll Mon souci c'est que la macro continue la suite des instructions sans attendre la fin du rafraîchissement des différents query's... J'ai lu qu'il y avait le paramètre :BackgroundQuery:úlse , mais je ne sais pas comment l'utiliser. J'ai essayé comme ceci: ThisWorkbook.RefreshAll BackgroundQuery > False -Mais ça veut pas... :-( Est-ce que quelqu'un pourrait me venir en aide, Merci d'avance, Cordialement,
Emile
Emile63
Merci pour votre aide. Daniel, ton dernier code était le bon.. ;-) Isabelle, je te remercie pour ton intervention. Toutefois, en mettant "VRAI" depuis le code de Daniel, toute la macro (assez longue) s'éxécute alors que les raffraîchissements de données ne sont pas encore terminés (la petite "terre" sur la barre d'état tourne encore une fois les procédures terminées). En mettant le tout sur "FAUX" cela semble fonctionner... Je l'ai relancée plusieurs fois, et je n'ai plus d'erreurs...
Je vous remercie pour votre solicitude, Cordialement,
Emile
Merci pour votre aide.
Daniel, ton dernier code était le bon.. ;-)
Isabelle, je te remercie pour ton intervention. Toutefois, en mettant
"VRAI" depuis le code de Daniel, toute la macro (assez longue)
s'éxécute alors que les raffraîchissements de données ne sont pas
encore terminés (la petite "terre" sur la barre d'état tourne encore
une fois les procédures terminées).
En mettant le tout sur "FAUX" cela semble fonctionner...
Je l'ai relancée plusieurs fois, et je n'ai plus d'erreurs...
Je vous remercie pour votre solicitude,
Cordialement,
Merci pour votre aide. Daniel, ton dernier code était le bon.. ;-) Isabelle, je te remercie pour ton intervention. Toutefois, en mettant "VRAI" depuis le code de Daniel, toute la macro (assez longue) s'éxécute alors que les raffraîchissements de données ne sont pas encore terminés (la petite "terre" sur la barre d'état tourne encore une fois les procédures terminées). En mettant le tout sur "FAUX" cela semble fonctionner... Je l'ai relancée plusieurs fois, et je n'ai plus d'erreurs...
Je vous remercie pour votre solicitude, Cordialement,