XL 2010 [RESOLU] Derniere ligne Tableau structuré

cp4

XLDnaute Barbatruc
Bonjour,

J'essaie d'assimiler les tableaux structurés en vba. Et, j'avoue être un peu perdu.
Sur la feuille 1, j'ai mis 2 tableaux (tableau1 A1:B2 vide, tableau2 F3:G4 avec une seule ligne de données)
1591934022034.png

De ce tuto , le résultat renvoyé est faux avec le code ci-dessous
VB:
Sub derligne_Tableau_Structuré()
Dim dl1 As Long, dl2 As Long, dl3 As Long, dl4 As Long
dl1 = Range("Tableau1").Rows.Count
dl2 = Range("Tableau1").ListObject.ListRows.Count
dl3 = Range("tableau2").Rows.Count
dl4 = Range("tableau2").ListObject.ListRows.Count

Debug.Print dl1:Debug.Print dl2:Debug.Print dl3:Debug.Print dl4

MsgBox "Range(" & """" & "tableau1" & """" & ").Rows.Count= " & dl1 & vbLf & _
"Range(" & """" & "tableau1" & """" & ").ListObject.ListRows.Count= " & dl2 _
& vbLf & "Range(" & """" & "tableau2" & """" & ").Rows.Count= " & dl3 & vbLf & _
"Range(" & """" & "tableau2" & """" & ").ListObject.ListRows.Count= " & dl4

End Sub
Normalement, Range("Tableau1").Rows.Count renvoie 1 et Range("Tableau1").ListObject.ListRows.Count renvoie 1 alors qu'il devrait renvoyer 0, vu que le tableau1 est vide.

Je suppose que j'ai dû raté quelque chose que je n'arrive pas à trouver.

Merci pour aide et explication.

Bonne journée.
 

Pièces jointes

  • Derniere ligne tableau structuré.xlsm
    16.8 KB · Affichages: 20
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour Jmf;),

Je sais bien que ligne Zéro (0) n'existe pas. Mais il s'agit de ListRows, à moins que Pierre Fauconnier nous raconte des bobards. Je vois bien dans son tuto que lorsque le tableau structuré est vide. Dans son exemple, Range("tableau2").ListObject.ListRows.Count renvoie bien 0 lorsque le tableau est vide et renvoie 1 lorsque la première ligne est non vide.
Désolé, de te dire que tu ne m'as pas convaincu:rolleyes:.

Merci beaucoup.
Bonne journée.
 
Dernière édition:

cp4

XLDnaute Barbatruc
J'ai compris. J'ai saisi les entêtes en ne mettant rien en-dessous et créé le tableau du coup, le code renvoie 1 pour la première ligne qui n'est pas exactement vide (pour excel,elle contenait des caractères vides). En supprimant, manuellement la ligne. Là, Listobject.Listrows renvoie bien 0.
1591941751800.png

Merci.
Bonne journée.
 

chris

XLDnaute Barbatruc
Bonjour

Un Listobject peut avoir son DataBodyRange vide et considéré comme nothing mais visuellement on voit la ligne sous les titres

Plus étonnant encore si on a créé des formules puis supprime toutes les lignes, l'ajout de nouvelles lignes par saisie ou collage à partir de la 1ère ligne apparemment vide va réactiver les formules sur l'ensemble des lignes du tableau

De même si on active la ligne des totaux, qu'on y définit des formules, on peut la désactiver et la réactiver à volonté, les formules sont mémorisées

C'est bien un objet à part

Pour en revenir à la question de départ, on évite de se référer aux lignes Excel si on manipule le ListObject : on se réfère plutôt à celles de son DataBodyRange
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour

Un Listobject peut avoir son DataBodyRange vide et considéré comme nothing mais visuellement on voit la ligne sous les titres

Plus étonnant encore si on a créé des formules puis supprimé toutes les lignes, l'ajout de nouvelles lignes par saisie ou collage à partir de la 1ère ligne apparemment vide va réactiver les formules sur l'ensemble des lignes du tableau

De même si on active la ligne des totaux, qu'on y définit des formules, on peut la désactiver et la réactiver à volonté, les formules sont mémorisées

C'est bien un objet à part

Pour en revenir à la question de départ, on évite de se référer aux lignes Excel si on manipule le ListObject : on se refère plutôt à celle de son DataBodyRange
Merci Chris ;) pour ces éclaircissements. J'essaie d’intégrer dans ma petite caboche l'utilisation des tableaux structurés qui offrent certains avantages.
Encore merci.
Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 156
Messages
2 085 819
Membres
102 992
dernier inscrit
KOSTIC