[VBA] Supprimer un lien vers une requête

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4593561
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" 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
HD
Le #4593521
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
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
MichDenis
Le #4593431
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
Publicité
Poster une réponse
Anonyme