Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Bonjour, merci pour ta réponse.

J'utilise Unlist :

Code:
Sheets("BD").ListObjects("BD_compta").Unlist

Dois-je plutôt mettre quelque chose du genre : Objects("BD_compta")=nothing.... je ne connais pas la synthaxe...
 

Bebere

XLDnaute Barbatruc
Roybaf
difficile sans un bout de fichier
le problème vient peut être de la différence de version 2016 2013
essaye de copier le tableau(sélection) dans une autre feuille et tu supprimes l'autre
 

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…