Tester nom tableau dynamique VBA

Bonjour

Pour des raisons pratiques je souhaite transformer un tableau dynamique en plages de cellules au cours d'une procédure.

Si cette dernière est interrompue et que le tableau dynamique n'a pas été régénéré en fin de procédure j'ai un message d'erreur quand je la relance, c'est normal..

Range("A3").Select

Set Selectedcell = ActiveCell

vtab = Selectedcell.ListObject.Name <== vtab=vide erreur

Worksheets("Base").ListObjects(vtab).Unlist

J'ai essayé de tester avec iserror, isempy ,is null mais j'ai un blocage permanent

Problème de syntaxe ?

Merci d'avance pour vos lumières

Cordialement

FINDRH

7testnomobjet.xlsx (12.86 Ko)

Bonjour Findrh, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim vtab As ListObject

Set vtab = Range("A3").ListObject
If Not vtab Is Nothing Then vtab.Unlist
End Sub

Bonjour et merci ThauThème,

Malheureusement cela ne fonctionne pas

J'ai contourné la difficulté par on error resume next....

Ci joint le fichier (xlsm!!!!) avec les parties macros concernées, la première qui fonctionne avec on error, la deuxième qui coince ...

Transmis à tout hasard car ce test d'erreur m'intéresse .....

Cordialement

FINDRH

6testnomobjet.xlsm (20.00 Ko)

Re,

Le code fonctionne parfaitement sans On Error Resume Next. Ce n'est pas de ma faute si tu n'as pas été capable de le fournir en totalité et/ou avec le bon fichier dès la première fois !...

Le problème viens de la condition sur Vcell qui, au second passage, va toujours aller au Else puisque A4 a été effacé :

Sub Rec[/color]upmauvais()
Dim vtab As ListObject

Sheets("BASE").Select
vcol = Range("a3").End(xlToRight).Column
vcel = Range("A4").Value
If vcel > 0 Then
    'oter forme tableau
    Set vtab = Range("A3").ListObject
    If Not vtab Is Nothing Then vtab.Unlist
    vligfr = Range("A3").End(xlDown).Row
    Range(Cells(4, 1), Cells(vligfr, vcol)).Select
    vligd = 4
    Selection.Clear
Else
    vligd = 4
End If
End Sub

Mais si tu supprimes cette condition tu verra qu'il n'y a pas plantage au second passage...

Bonjour Thauthème

Effectivement j'ai mal enregistré le premier fichier ( xlsx ) au lieu de xlsm et t'ai remercié de ta réponse et non pas reproché que cela ne marche pas...

J'ai donc renvoyé le bon fichier avec mon bout de macro avec ma réponse.... je ne vois pas ou j'ai pu te faire croire que le mauvais envoi était de ta faute.... J'en suis le premier désolé....

Cela étant dit, ton deuxième code fonctionne, et je t'en remercie très sincèrement.

Cordialement

FINDRH

Bonjour,

Tardivement, mais...

Cdlt.

Public Sub DEMO()
Dim ws As Worksheet, ACell As Range
    Set ws = Worksheets("BASE")
    Set ACell = ws.Cells(3, 1)
    If Not ACell.ListObject Is Nothing Then
        With ws.ListObjects(1)
            If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
            .TableStyle = ""
            .Unlist
        End With
    End If
End Sub

Merci Jean Eric pour toutes ces subtilités de programmation que j'emmagasine au fur et à mesure !

Excel Vba a du être programmé par un italien, les doubles négations sont effectivement légion et me rappellent les "No, si? ou Si,No? " de mes amis transalpins !

Cordialement

FINDRH

Rechercher des sujets similaires à "tester nom tableau dynamique vba"