Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de destination de requête

3 réponses
Avatar
Serge
Bonjour,


Dans le code ci-dessous j'ai le message d'erreur suivant :

La plage de destination n'est pas la même feuille de calcul que celle dans
laquelle la table de requête est créée.

Mon code :
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear ---> Efface mes anciennes données
End With

MsgBox "The name of the active sheet is " & ActiveSheet.Name -> Me renvoit
Client !


With ActiveSheet.QueryTables.Add(Connection:=connstring1, _
Destination:=Range("A1"), Sql:=sqlBestCustomer51)
.Refresh
End With

Set connstring1 = Nothing

Ou peut se trouver mon erreur sachant pourtant que msgbox me renvoit bien
comme feuille active Client ?
Pour info j'utilise ailleur dans mon project un autre connstring =
..........

Merci de vos LUMIERES ;-)
Serge

3 réponses

Avatar
michdenis
Bonjour Serge,


Et pour le code :

et j'ajouterais à celui-ci une ligne de code qui détruirait
la plage de cellules nommées (barre des menus / insertion / nom / définir)

à chaque fois que tu crées un querytable, excel crée une plage nommée et le fait d'effacer tes données, ne détruit pas
la plage nommée que le programme Excel a enregistré. Comme tu ne fais pas seulement rafraîchir tes données, mais utilise
une nouvelle requête, je détruirais la référence qu'excel a conservé en mémoire qui elle fait référence à une autre
requête.

P.S. Je n'ai pas testé ce que j'avance ... mais je sens que quelqu'un va se mettre à la tâche et qu'il va nous
transmettre ses découvertes !

;-))

'-------------------
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear
With .QueryTables.Add(Connection:=connstring1, _
Destination:=Worksheets("Client").Range("A1") _
, Sql:=sqlBestCustomer51)
.Refresh
End With
End With
Set connstring1 = Nothing
'-------------------


Salutations!


"Serge" <serge.g8[NO-SPAM]@laposte.net> a écrit dans le message de news: cmqj6r$2vnj$
Bonjour,


Dans le code ci-dessous j'ai le message d'erreur suivant :

La plage de destination n'est pas la même feuille de calcul que celle dans
laquelle la table de requête est créée.

Mon code :
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear ---> Efface mes anciennes données
End With

MsgBox "The name of the active sheet is " & ActiveSheet.Name -> Me renvoit
Client !


With ActiveSheet.QueryTables.Add(Connection:=connstring1, _
Destination:=Range("A1"), Sql:=sqlBestCustomer51)
.Refresh
End With

Set connstring1 = Nothing

Ou peut se trouver mon erreur sachant pourtant que msgbox me renvoit bien
comme feuille active Client ?
Pour info j'utilise ailleur dans mon project un autre connstring ..........

Merci de vos LUMIERES ;-)
Serge
Avatar
michdenis
Bonjour,


Si tu cherches la ligne de code pour supprimer le "NOM" de la plage nommée de ton querytable, tu peux utiliser ceci :

Range("A1") réfère à une des cellules de cette plage où sont affichées le résultat de la plage nommée.
cette ligne de code génère une erreur si le "Nom" n'existe pas ou a déjà été supprimé. Il faut alors utilisé dans le
code "On error resume next"

ThisWorkbook.Names(Range("A1").CurrentRegion.Name.Name).Delete


Salutations!


Et pour le code :

et j'ajouterais à celui-ci une ligne de code qui détruirait
la plage de cellules nommées (barre des menus / insertion / nom / définir)

à chaque fois que tu crées un querytable, excel crée une plage nommée et le fait d'effacer tes données, ne détruit pas
la plage nommée que le programme Excel a enregistré. Comme tu ne fais pas seulement rafraîchir tes données, mais utilise
une nouvelle requête, je détruirais la référence qu'excel a conservé en mémoire qui elle fait référence à une autre
requête.

P.S. Je n'ai pas testé ce que j'avance ... mais je sens que quelqu'un va se mettre à la tâche et qu'il va nous
transmettre ses découvertes !

;-))

'-------------------
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear
With .QueryTables.Add(Connection:=connstring1, _
Destination:=Worksheets("Client").Range("A1") _
, Sql:=sqlBestCustomer51)
.Refresh
End With
End With
Set connstring1 = Nothing
'-------------------


Salutations!


"Serge" <serge.g8[NO-SPAM]@laposte.net> a écrit dans le message de news: cmqj6r$2vnj$
Bonjour,


Dans le code ci-dessous j'ai le message d'erreur suivant :

La plage de destination n'est pas la même feuille de calcul que celle dans
laquelle la table de requête est créée.

Mon code :
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear ---> Efface mes anciennes données
End With

MsgBox "The name of the active sheet is " & ActiveSheet.Name -> Me renvoit
Client !


With ActiveSheet.QueryTables.Add(Connection:=connstring1, _
Destination:=Range("A1"), Sql:=sqlBestCustomer51)
.Refresh
End With

Set connstring1 = Nothing

Ou peut se trouver mon erreur sachant pourtant que msgbox me renvoit bien
comme feuille active Client ?
Pour info j'utilise ailleur dans mon project un autre connstring ..........

Merci de vos LUMIERES ;-)
Serge
Avatar
Serge
Merci je vais tester


"michdenis" a écrit dans le message de
news:
Bonjour,


Si tu cherches la ligne de code pour supprimer le "NOM" de la plage nommée
de ton querytable, tu peux utiliser ceci :


Range("A1") réfère à une des cellules de cette plage où sont affichées le
résultat de la plage nommée.

cette ligne de code génère une erreur si le "Nom" n'existe pas ou a déjà
été supprimé. Il faut alors utilisé dans le

code "On error resume next"

ThisWorkbook.Names(Range("A1").CurrentRegion.Name.Name).Delete


Salutations!


Et pour le code :

et j'ajouterais à celui-ci une ligne de code qui détruirait
la plage de cellules nommées (barre des menus / insertion / nom / définir)

à chaque fois que tu crées un querytable, excel crée une plage nommée et
le fait d'effacer tes données, ne détruit pas

la plage nommée que le programme Excel a enregistré. Comme tu ne fais pas
seulement rafraîchir tes données, mais utilise

une nouvelle requête, je détruirais la référence qu'excel a conservé en
mémoire qui elle fait référence à une autre

requête.

P.S. Je n'ai pas testé ce que j'avance ... mais je sens que quelqu'un va
se mettre à la tâche et qu'il va nous

transmettre ses découvertes !

;-))

'-------------------
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear
With .QueryTables.Add(Connection:=connstring1, _
Destination:=Worksheets("Client").Range("A1") _
, Sql:=sqlBestCustomer51)
.Refresh
End With
End With
Set connstring1 = Nothing
'-------------------


Salutations!


"Serge" <serge.g8[NO-SPAM]@laposte.net> a écrit dans le message de news:
cmqj6r$2vnj$

Bonjour,


Dans le code ci-dessous j'ai le message d'erreur suivant :

La plage de destination n'est pas la même feuille de calcul que celle dans
laquelle la table de requête est créée.

Mon code :
sqlBestCustomer51 = "SELECT ......."
connstring1 = "ODBC;DSN=odbc_test;UID=toto;PWD=toto;Database=Vente"

With Worksheets("Client")
.Activate
.Range("A1", "BT400").Clear ---> Efface mes anciennes données
End With

MsgBox "The name of the active sheet is " & ActiveSheet.Name -> Me
renvoit

Client !


With ActiveSheet.QueryTables.Add(Connection:=connstring1, _
Destination:=Range("A1"), Sql:=sqlBestCustomer51)
.Refresh
End With

Set connstring1 = Nothing

Ou peut se trouver mon erreur sachant pourtant que msgbox me renvoit bien
comme feuille active Client ?
Pour info j'utilise ailleur dans mon project un autre connstring > ..........

Merci de vos LUMIERES ;-)
Serge