Suppression ligne de tableaux sous conditions

bonjour tout le monde,

je cherche un code pour effectuer l'opération suivante

dans mon tableau nommé Tableau1 ; si le contenu de la cellule C2 est identique à celui de la cellule I2 alors on supprime la ligne concernée dans le tableau1 (et non la ligne de la feuille)

et ainsi de suite pour toutes les lignes du tableau.

merci d'avance de votre aide.

Bonjour slygan, le forum,

Cordialement,

20forum.xlsm (20.73 Ko)

Re,

A tester...

Sub SUPPRIMER()
 Dim tb, ntb(), i, j, k
  Application.ScreenUpdating = False

  With Sheets("DATA")
   If .ListObjects("Tableau1").DataBodyRange Is Nothing Then Exit Sub
    tb = .ListObjects("Tableau1").DataBodyRange
    k = 0
    ReDim ntb(1 To UBound(tb, 1), 1 To UBound(tb, 2))
     For i = 1 To UBound(tb, 1)
      If tb(i, 3) <> tb(i, 9) Then
       For j = 1 To UBound(tb, 2)
        ntb(k + 1, j) = tb(i, j)
       Next j
       k = k + 1
      Else
       cp = cp + 1
      End If
     Next i
   With .ListObjects("Tableau1")
    .DataBodyRange.Delete
    .InsertRowRange.Cells(1).Resize(k, UBound(tb, 2)) = ntb
   End With
  End With
 Erase tb: Erase ntb: MsgBox cp & " lignes supprimée(s)", vbInformation
End Sub
12slygan.xlsm (20.03 Ko)

Cordialement,

Bonjour,

Une alternative : suppression en commençant par la fin (pour ne pas avoir de décalage dans les n° de ligne) et avec le nom des colonnes ce qui permet de s'affranchir de leur emplacement réel.

Sub SUPPRIMER()
Dim nNbLig As Long
Dim nILig As Long
Dim nIdxCol1 as integer
Dim nIdxCol2 as integer
   Application.ScreenUpdating = False
   With ThisWorkbook.Worksheets("DATA").ListObjects("Tableau1")
      nNbLig = .ListRows.Count
      nIdxCol1 = .ListColumns("TEXTE DE LA LIGNE").Index
      nIdxCol2 = .ListColumns("texte a ajouter").Index
      For nILig = nNbLig To 1 Step -1
         If .ListColumns(nIdxCol1).DataBodyRange(nILig).Value = .ListColumns(nIdxCol2).DataBodyRange(nILig).Value Then .ListRows(nILig).Delete
      Next
   End With
   Application.ScreenUpdating = True
End Sub

Cdlt,

Cylfo

merci cylfo,

ta proposition marche nickel

xosansukai, merci de ta proposition ; celle de cyflo est plus simple pour ma comprehesion.

Re,

Effectivement, Cylfo utilise une boucle sur chaque ligne pour supprimer les indésirables.

Moi, je stocke les lignes que je souhaite garder dans une variable tableau(travail en mémoire), je vide entièrement Tableau1 puis réécris les données stockées, c'est un peu complexe à appréhender effectivement,.

L'essentiel est que ton problème soit résolu,

Bonne continuation,

Rechercher des sujets similaires à "suppression ligne tableaux conditions"