Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." <lk@klk.com> a écrit dans le message de
news:401515b1$0$13234$626a54ce@news.free.fr...
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." <lk@klk.com> a écrit dans le message de
news:4014f28e$0$13235$626a54ce@news.free.fr...
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour ,
L idée est là, mais je viens de tester et j ai une erreur 1004.
Le classeur vient d etre ouvert, la macro pas encore executée,
et la plage des valeurs importés existe ( plage ou nom de requete).
J ai essayé de modifié ton code en mettant If Range("nomrequete") is nothing
...
mais marche pas non plus.
J ai essayé :
oProdResult est ma querytable.
If oProdResult is nothing (erreur 424)
If oProdResult.Name is nothing (erreur 1004).
Je vois pas comment faire.
Merci pour ton aide,
Seb.
"michdenis" a écrit dans le message de
news:Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de donnéesoccupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de tarequête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te seraimpossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$En fait il semblerait que cette procedure crée la requete QueryTable
(ligneSet .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour ,
L idée est là, mais je viens de tester et j ai une erreur 1004.
Le classeur vient d etre ouvert, la macro pas encore executée,
et la plage des valeurs importés existe ( plage ou nom de requete).
J ai essayé de modifié ton code en mettant If Range("nomrequete") is nothing
...
mais marche pas non plus.
J ai essayé :
oProdResult est ma querytable.
If oProdResult is nothing (erreur 424)
If oProdResult.Name is nothing (erreur 1004).
Je vois pas comment faire.
Merci pour ton aide,
Seb.
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:e6AdyKC5DHA.1040@TK2MSFTNGP10.phx.gbl...
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." <lk@klk.com> a écrit dans le message de
news:401515b1$0$13234$626a54ce@news.free.fr...
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." <lk@klk.com> a écrit dans le message de
news:4014f28e$0$13235$626a54ce@news.free.fr...
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour ,
L idée est là, mais je viens de tester et j ai une erreur 1004.
Le classeur vient d etre ouvert, la macro pas encore executée,
et la plage des valeurs importés existe ( plage ou nom de requete).
J ai essayé de modifié ton code en mettant If Range("nomrequete") is nothing
...
mais marche pas non plus.
J ai essayé :
oProdResult est ma querytable.
If oProdResult is nothing (erreur 424)
If oProdResult.Name is nothing (erreur 1004).
Je vois pas comment faire.
Merci pour ton aide,
Seb.
"michdenis" a écrit dans le message de
news:Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de donnéesoccupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de tarequête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te seraimpossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$En fait il semblerait que cette procedure crée la requete QueryTable
(ligneSet .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." <lk@klk.com> a écrit dans le message de
news:401515b1$0$13234$626a54ce@news.free.fr...
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." <lk@klk.com> a écrit dans le message de
news:4014f28e$0$13235$626a54ce@news.free.fr...
Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
base
de données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith
Bonjour Seb,
Lorsque tu crées un "Querytable", Excel crée un "Nom" ( barre des
menus/insertion/nom) qui représente la plage de données
occupée par les données de la requête.
Et pour baptiser cette plage du nom que tu as choisi, ajoute cette ligne à
ta procédure au moment de la création de ta
requête
With oProdResults
.Name = "Seb1"
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'/....
end with
Si tu vérifies que ce "Nom" existe, cela signifie que la requête de ta
querytable existe. Si tu détruis ce "nom" il te sera
impossible de rafraîchir les données obtenues de ta requête.. le lien
n'existant plus.
Et pour vérifier l'existence d'un plage nommée : (il y a aussi d'autre
méthode par la gestion d'erreur)
Dim Rg as Range
set Rg =range("NomDeLaRequête)
If rg is nothing = True then
Msgbox "La requête n'existe pas"
else
Msgbox "La requête existe"
end if
Est-ce que cela répond à tes attentes ?
Salutations!
"Seb..." a écrit dans le message de
news:401515b1$0$13234$
En fait il semblerait que cette procedure crée la requete QueryTable
(ligne
Set .... =Query)
et ensuite affiche la table dans la feuille avec .Refresh.
Le fait d executer .Refresh par la suite rafraichi les données comme je le
souhaite.
Question : Comment tester l existence de ma requete QueryTable afin de ne
pas la recréer ?
Si oProdResults existe alors oProdResults.Refresh
Sinon Set oProdResults =..... et oProdResults.Refresh.
Merci,
seb.
"Seb..." a écrit dans le message de
news:4014f28e$0$13235$Set shProd = ThisWorkbook.Worksheets("production")
' Modifier le chemin ci dessous, pour acceder à la requete issue de la
basede données
' Essai avec un fichier afin de ne pas perturber le serveur.
Set oProdResults = shProd.QueryTables _
.Add(Connection:="URL;E:Documents##Macro - fichier
productionsqlquery1.htm", _
Destination:=shProd.Cells(2, 1))
With oProdResults
.WebFormatting = xlNone
.WebSelectionType = xlSpecifiedTables
.WebTables = "1,2"
'Ajuste la largeur des colonnes aux nouvelles données
.AdjustColumnWidth = True
.Refresh
.FieldNames = True
' la variable rProdResults contient la plage des données
.ResultRange = rProdResults
EndWith