End(xlUp).Row + 1 avec tableau structuré

Bonjour à tous,

Ayant effectué plusieurs recherches et tests sans ayant pu trouver la solution rapidement, je me permet de poster la solution que j'ai trouvé à mon problème pour permettre à d'autres de solutionner un problème similaire.

Je voulais copier mes données d'une feuille vers la dernière ligne vide d'un tableau structuré se trouvant dans une autre feuille.

Pour ce faire, j'utilisais ThisWorkbook.Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1. Le problème était qu'avec ce code, mes données se collaient à la dernière ligne de mon tableau, et non sur la dernière ligne vide.

En lisant un poste (sujet rien à voir avec celui-là) j'ai trouvé une ligne de code qui a permis de solutionner mon problème :

ThisWorkbook.Worksheets("Feuil1").Range("Tableau1").ListObject.ListColumns(1).DataBodyRange(Range("Tableau1").Rows.Count).End(xlUp).Row + 1

Désignant mon tableau structuré "Tableau1", Range A correspondant à ListObject.ListColumns(1) (première colonne) ; Et là... Cela fonctionne !

Espérant avoir pu aider.

Bonjour

Rapport à votre souci, nul besoin de passer par end(xlup).row + 1 pour rechercher votre dernière ligne vide avec les tableaux structurés. Différentes façons existent dont en voici une que j'utilise souvent

With ThisWorkbook.Worksheets("Feuil1").ListObjects("Tableau1")
    If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    Else: .ListRows.Add: lig = .ListRows.Count
    End If
End With

Une fois fait, il vous suffit d'utiliser la variable lig pour compléter les colonnes de votre tableau

Cela vous permet d'éviter une erreur si par hasard vous avez une donnée qui traine en colonne A et qui vous renvoie à une mauvaise ligne avec la méthode END(Xlup)

Cordialement

Bonjour Dan,

Testé et approuvé ! Merci pour le partage !

Bonjour Dan et JonVa,

Une autre façon plus courte, sans faire référence à la feuille où se trouve le tableau structuré :

Dim ligne As ListRow
Dim lig As Integer

With [Tableau1].ListObject
    Set ligne = .ListRows.Add: lig = ligne.Index
End With

NB : à noter que par défaut Listrows.Add ajoute une nouvelle ligne à la fin du tableau mais qu'il est possible de paramétrer la ligne d'ajout avec Listrows.Add(i) où i représente la ligne où doit être ajoutée la nouvelle.

Hello thev,

Testé et approuvé également ; merci à vous deux !

Rechercher des sujets similaires à "end xlup row tableau structure"