Comment vérifier que la ligne active est dans un tableau structuré Excel?

Bonjour,

J'ai un tableau structuré que je peux parcourir pour effectuer des diverses opérations.
Je voudrais savoir comment faire pour déterminer si la ligne active de la feuille se trouve à l'intérieur de ce tableau. Cette aligne active est bien sûr soit sélectionnée au préalable dans la feuille soit on la récupère à partir de la cellule active.
Concrètement si mon tableau commence à la ligne 2 de la feuille (entête) et fini à la ligne 5 (dernière ligne) : 3 enregistrements avec ou sans donnée.
Si la cellule A6 est sélectionnée ou la ligne 6 de la feuille, comment peut-on déterminer que cette ligne 6 est comprise entre la ligne 1 du tableau (et non de la feuille) et la dernière ligne du tableau (et non de la feuille)?
Mon code suivant parcoure le tableau de la première ligne (1) à la dernière (rg.Rows.Count).
Dans l'exemple que j'ai pris :
- la ligne 1 du tableau correspond à la ligne 3 de la feuille
- la dernière ligne du tableau (rg.Rows.Count=3) correspond à la 5ème ligne de la feuille.
Donc je dois vérifier que la ligne active 6 est en dehors ou dans le tableau c'est à dire entre la ligne 3 de la feuille et la ligne 5 de la feuille.
Désolé si je ne suis pas clair et merci d'avance pour votre aide.

Private Sub cmdDeleteLine_Click()
    Dim FL1 As Worksheet
    Dim tbl As ListObject
    Dim rg As Range
    Dim r As Long
    Dim idx As Integer, nb As Integer
    idx = ActiveCell.Row
    Set FL1 = Worksheets("Feuil1")  '
    Set tbl = FL1.ListObjects("Tab1")
    Set rg = tbl.DataBodyRange

    If Not rg Is Nothing Then        
        'On recupère tous les ID et Nom du tableau
        For r = 1 To rg.Rows.Count
            ID = rg(r, 1).Value
            nom = rg(r, 2).Value
            MsgBox nom & " " & ID
        Next        
        'Comment déterminer si la ligne active est comprise entre 1 et rg.Rows.Count?

    End If
End sub

bonjour,

je ne comprends pas le but final, mais un essai

Sub cmdDeleteLine_Click()
     Dim c     As Range
     Set lo = Worksheets("Feuil1").ListObjects("Tableau1")     'le tableau
     If lo.Parent.Name <> ActiveSheet.Name Then MsgBox "mauvaise feuille": Exit Sub     'feuille correcte
     Set c = Intersect(lo.Range, ActiveCell.EntireRow)     'intersect avec le tableau et la ligne complète
     If c Is Nothing Then MsgBox "ligne ne fait pas partie du tableau": Exit Sub

     aa = Application.Transpose(Application.Transpose(c.Value))     'le listrow de cette ligne
     MsgBox "ligne " & c.Row & vbLf & Join(aa, vbLf)
End Sub

Salut,

Tu peux savoir si tu es dans un tableau structuré avec ce bout de code : ActiveCell.ListObject.Name en retour le nom du tableau, si en dehors alors le listObject est en Nothing et renvoi une erreur.

Test :

    Dim t As ListObject
    Set t = ActiveCell.ListObject
    If Not t Is Nothing Then
        MsgBox ActiveCell.ListObject.Name
    Else
        MsgBox "En dehors du tableau"
    End If

Voilà tu as donc plusieurs solutions.

Rechercher des sujets similaires à "comment verifier que ligne active tableau structure"