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

[VBA] Supprimer un lien vers une requête

3 réponses
Avatar
HD
Bonjour,

Sur l'une de mes macros j'ai une requête (avec MS Query) pour récupérer des
infos sur une BdD Access. Pour couper le lien j'utilise la ligne de code
suivante :

Range("A1").QueryTable.Delete

Mon problème est que... si cette ligne fonctionne parfaitement sous Excel 97
à 2003... elle ne fonctionne pas sous Excel 2007.

Connaissez vous une commande qui soit compatible avec les versions d'Excel
97 à 2007 ? ou au moins qui fonctionne sous Excel 2007 ?

Merci d'avance pour votre aide.

--
@+
HD

3 réponses

Avatar
MichDenis
Chaque fois que tu crées un QueryTable, il y a un nom (plage nommée du menu
insertion / nom / définir ) qui se crée. Tu n'as qu'à supprimer ce nom pour
supprimer ce nom.
Tu regardes dans la propriété du QueryTable, son nom et tu supprimes ce
nom de la liste des plages nommées.

En VBA

Dim Qt As QueryTable
Set Qt = Feuil1.QueryTables("SonNom")
'Ou tu peux utiliser l'index si tu désires
Set Qt = Feuil1.QueryTables(1)
Names(Qt.Name).Delete
Set Qt = Nothing




"HD" a écrit dans le message de news: f5tdrc$1t5i$
Bonjour,

Sur l'une de mes macros j'ai une requête (avec MS Query) pour récupérer des
infos sur une BdD Access. Pour couper le lien j'utilise la ligne de code
suivante :

Range("A1").QueryTable.Delete

Mon problème est que... si cette ligne fonctionne parfaitement sous Excel 97
à 2003... elle ne fonctionne pas sous Excel 2007.

Connaissez vous une commande qui soit compatible avec les versions d'Excel
97 à 2007 ? ou au moins qui fonctionne sous Excel 2007 ?

Merci d'avance pour votre aide.

--
@+
HD
Avatar
HD
Voilà ma requête et j'ai pourtant encore une erreur sur la suppression du
nom... :-(

<< Erreur d'exècution '1004': Erreur définie par l'application ou par
l'objet >>
M'apparait sur la ligne << Names("TabListeDoss").Delete >>

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=MS Access
Database;DBQ=MonFic.mdb;DefaultDir=MonRep;DriverId%;FIL=MS
Access;MaxBufferSize 48;PageTimeout=5;",
Destination:=Range("$A$1")).QueryTable
.CommandText = MaRequête
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "TabListeDoss"
.Refresh BackgroundQuery:úlse
End With
Range("B3").Select
Names("TabListeDoss").Delete
Avatar
MichDenis
Faut pas tout mélanger... utilise la propriété Name
pour récupérer le "nom" du QueryTable.


Dim X as String

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=MS Access
Database;DBQ=MonFic.mdb;DefaultDir=MonRep;DriverId%;FIL=MS
Access;MaxBufferSize 48;PageTimeout=5;",
Destination:=Range("$A$1")).QueryTable
.CommandText = MaRequête
X = .Name
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "TabListeDoss"
.Refresh BackgroundQuery:úlse
End With
Application.Names(X).Delete