Problème écriture tableau

Bonjour,

J'ai un problème d'interprétation de mon code, je souhaite ecrire des lignes dans mon tableau, hors ces lignes sont en dehors de mon tableau.

J'essaye de déclarer mon tableau en listobject mais rien à faire.

Merci

12axax.xlsm (23.88 Ko)

Bonjour

Vous voulez écrire ou supprimer des lignes dans votre TS !?

Car les seules lignes ou votre TS est déclaré c'est dans la sub "supprimer"

Sub supprimer()
  Dim t_tableau As ListObject
  Set t_tableau = ThisWorkbook.Worksheets("Feuil1").ListObjects("Tableau1")
  'Indiciation de la ligne
  i_row = 1
  While i_row <= t_tableau.ListRows.Count
    'Check x et X"
    While t_tableau.ListRows(i_row).Range(5) = "x" Or t_tableau.ListRows(i_row).Range(5) = "X"
      t_tableau.ListRows(i_row).Delete           'Suppression
      'Check si hors tableau
      If i_row > t_tableau.ListRows.Count Then
        Exit Sub
      End If
    Wend
    i_row = i_row + 1                            'Incrémentation
    'Check si hors tableau
    If i_row > t_tableau.ListRows.Count Then
      Exit Sub
    End If
  Wend
End Sub

A+

Bonjour,

j'aimerais les saisir et les effacer mais Effacer fonctionne

Voilà

Bonjour,

ci-dessous code pour ajouter

Sub Bouton2_Cliquer()
    Dim var_pn, var_ra, var_rb, var_ln
    Dim ligne As ListRow
    Dim i As Integer

    var_pn = Range("H12")
    var_ra = Range("G26")
    var_rb = Range("K11")
    var_ln = Range("K26")

    With [Tableau1].ListObject
        Set ligne = .ListRows.Add: i = ligne.Index  'ajout d'une ligne à la fin du TS

        If var_pn <> "" And var_ra <> "" And var_rb <> "" And var_ln <> "" Then
            .ListColumns("Pn").DataBodyRange(i) = var_pn
            .ListColumns("r").DataBodyRange(i) = var_ra
            .ListColumns("R ").DataBodyRange(i) = var_rb
            .ListColumns("Ln").DataBodyRange(i) = var_ln
        End If

    End With

End Sub

ci-dessous code pour supprimer (on doit aller de la dernière ligne à la première)

Sub supprimer()

    Dim t_tableau As ListObject
    Dim i_row As Integer
    Set t_tableau = [Tableau1].ListObject

    'Indiciation de la ligne
    With t_tableau
        For i_row = .ListRows.Count To 1 Step -1
            If UCase(.ListColumns("Supprimer").DataBodyRange(i_row)) = "X" Then .ListRows(i_row).Delete    'Suppression
        Next i_row
    End With

End Sub

Je vous engage à consulter mon tutoriel pour les instructions VBA à utiliser pour un TS

https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Salut BrunoM45

Salut,

Une fonction de Pierre Fauconnier à mettre dans votre module boite à outils

' // TS_AddRow By Pierre Fauconnier le : 23/02/2022
' // Ajoute une ligne dans un tableau structuré et la remplie avec les valeurs passées en Array
' // Exemple TS_AddRow Range("Tableau1"), VBA.array("Nom", txtNom.Value, "Date", Format(txtDate.Value, "Short date")
Function TS_AddRow(TS As Range, Values, Optional Position As Long)
    Dim lstR As ListRow
    Dim lstO As ListObject
    Dim Counter As Long

    Set lstO = TS.ListObject
    If Position = 0 Or Position > lstO.ListRows.Count Then Position = lstO.ListRows.Count + 1
    Set lstR = lstO.ListRows.Add(Position)
    For Counter = LBound(Values) To UBound(Values) Step 2
        lstR.Range(lstO.ListColumns(Values(Counter)).index).Value = Values(Counter + 1)
    Next

    If Not lstR Is Nothing Then Set lstR = Nothing
    If Not lstO Is Nothing Then Set lstO = Nothing

End Function
Rechercher des sujets similaires à "probleme ecriture tableau"