XL 2013 Nom de tableau : existe déjà

roybaf

XLDnaute Occasionnel
Bonjour à tous,

Dans ma macro j'importe des données externes via requête, je nomme mon tableau en "BD_compta",

Code:
 With Sheets("BD").ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=dBASE Files;DefaultDir=" & chemin & ";DriverId=533;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandText = requetea
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = _
        "BD_compta" '"Tableau_Lancer_la_requête_à_partir_de_dBASE_Files"
        .Refresh BackgroundQuery:=False
    End With

Ensuite je transforme en plage et j'ai mes données à traiter.

La première fois que je lance la macro pas de problème, sauf que lorsque je la relance j'ai le message :

"Ce nom existe déjà, utilisez un nom unique"

Lors du commencement de ma macro je test si nom existe, s'il existe alors supprimé.

Code:
If FeuilleExiste(ThisWorkbook, "BD") Then
    Call sup_feuilles
    Call ajouter_feuilles
    ActiveWorkbook.Names("BD_compta").Delete

Je précise que je modifie mon code car je dois adapter à excel 2013, en effet sur excel 2016 tout fonctionne!!

Quand j'ouvre gestionnaire de nom : "BD_compta" n'y est pas... j'en perd mon latin!!

Merci d'avance pour vos retours.
 

Bebere

XLDnaute Barbatruc
bonjour
je pense que tu dois employer la méthode unlist
code qui suit à adapter
Code:
Sub DeList()
Dim wrksht As Worksheet
Dim objListObj As ListObject

Set wrksht = ActiveWorkbook.Worksheets("Sheet1")
Set objListObj = wrksht.ListObjects(1)
objListObj.Unlist
End Sub
 

roybaf

XLDnaute Occasionnel
En fait quand je lance la macro une seconde fois elle s'arrête sur: ListObject.DisplayName = _
"BD_compta", le nom existe déjà alors que je ne l'ai plus dans le gestionnaire des noms.

Je pense que l'objet créer garde en mémoire le nom BD_compta d'ou l'erreur, comment peut on écrire :

BD_compta=nothing
 

Bebere

XLDnaute Barbatruc
Code:
Public Sub Essai()
Dim nom, Lobj As ListObject
'Feuil1.ListObjects(1).Name = "BD_COMPTA"
Set Lobj = ThisWorkbook.Worksheets("Feuil1").ListObjects("BD_COMPTA") '
Set Lobj = Nothing'concerne la variable Lobj
'Feuil1.ListObjects(1).Name = "BD_COMPTA"
'nom = Feuil1.ListObjects(1).Name
'Feuil1.ListObjects("BD_COMPTA").Unlist
End Sub

edit si tu changeais sourcetype:=0 par xlSrcRange en début de code
 
Dernière édition:

roybaf

XLDnaute Occasionnel
Merci pour ton aide Bebere, j'ai essayé sans succès.

J'ai changé dans mon code au moment du bug "BD_compta" par "BD_compta2" le tableau c'est bien importé.

J'ai essayé de la relancer et rebelotte le nom existe déjà ! alors que j'ai vérifié avant lancement je n'avais ni "BD_compta" ni "BD_compta2" !!! Sur excel 2016 je n'ai pas de problème pourtant.

Ou sont stockés les noms de listobject??
 

Discussions similaires

Réponses
22
Affichages
3 K
Réponses
4
Affichages
2 K

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16