VBA - Suppression lignes tableau selon condition

Bonjour,

je sollicite votre aide car mes connaissances en VBA sont très limités. Je souhaiterai supprimer de manière automatique les lignes de mon tableau ou la valeur de chantier est marqué #REF ( je précise que je veux supprimer les lignes de mon tableau uniquement et non les lignes de ma feuille). Ainsi cela me permet de supprimer mes chantiers livrés. Merci par avance pour votre réponse.

capture d ecran 2024 04 24 094828

pour donner un peu plus de contexte, le tableau posté en capture d'écran est tiré d'un autre tableau avec plus d'information et lorsque je retire une ligne de mon autre tableau, cela m'indique une erreur (#ref!) dans le petit tableau, ce qui est logique. Cependant je veux faire en sorte que cette erreur ne s'affiche plus et que la ligne correspondante soit directement supprimé du petit tableau.

Bonjour,

J'aurais bien dit qu'on peut partir sur ça:

Sub test()
With Range("B2").ListObject
    For i = .ListRows.Count To 1 Step -1
        If .ListRows(i).Range.Cells(1, 1).Formula = "=#REF!" Then
            .ListRows(i).Delete
        End If
    Next i
End With
End Sub

Sans fichier je ne peux pas faire mieux, attention à ne pas lancer la macro depuis la mauvaise feuille.

Sinon sans VBA on peut manuellement sélectionner la colonne B, aller dans les options de recherche (la loupe sur l'onglet d'accueil du ruban), dans "sélectionner les cellules", choisir "Formules", puis décocher tout sauf "Erreurs", ensuite faire un clic droit sur l'une des cellules sélectionnée, et cliquer sur supprimer ligne de tableau.

On peut aussi faire un filtre sur la colonne B pour afficher uniquement les lignes avec l'erreur et les supprimer en les sélectionnant.

Bonjour,

Merci beaucoup pour votre réponse, je pars essayer de suite. Et oui effectivement c'est assez simple sans VBA mais cela est pour une question de praticité.

Je vous remercie pour votre aide cependant, cela ne fonctionne pas, la macro ne déclenche aucune action. Je peux vous joindre mon fichier pour faciliter la résolution de ce problème.

12planning-general.xlsm (138.26 Ko)

Bonjour Enzo_17, Ausecour , le forum,

Un autre essai....

Sub test()
 Dim tb, ntb(), i%, j%, k%

  Application.ScreenUpdating = False

   With Sheets("Charge K2").ListObjects("TableauK2")
    If Not .DataBodyRange Is Nothing Then
     tb = .DataBodyRange
      k = 0
      ReDim ntb(1 To UBound(tb, 1), 1 To UBound(tb, 2))
       For i = 1 To UBound(tb, 1)
        If Not IsError(tb(i, 1)) Then
         For j = 1 To UBound(tb, 2)
          ntb(k + 1, j) = tb(i, j)
         Next j
         k = k + 1
        End If
       Next i
      .DataBodyRange.Delete
      If k > 0 Then .InsertRowRange.Cells(1).Resize(k, UBound(tb, 2)) = ntb
    End If
   End With
 Erase tb: Erase ntb
End Sub

Cordialement,

Bonsoir,

à mon tour !

Code à copier sur la feuille en question et il sera lancé lors de l'activation de la feuille :

Private Sub Worksheet_Activate()
    For i = Range("Tableauk2").Rows.Count To 1 Step -1
        For j = 1 To 4
            If IsError(Range("Tableauk2").Cells(i, j)) Then
                Range("Tableauk2").Cells(i, j).Delete
                Exit For
            End If
        Next j
    Next
End Sub

un subtile mélange de Ausecour et Xor !

@ bientôt

LouReeD

Merci beaucoup à vous 3 pour vos réponses et le temps que vous avez pris pour moi. Vous m'avez été d'une grande utilité et j'ai pu résoudre mon problème.

Je vous souhaite une bonne journée.

Bonsoir,

merci de votre retour et remerciements dont j'en prends une petite partie !

@ bientôt

LouReeD

Bonjour,

Je reviens vers vous car j'ai toujours un problème qui persiste. Enfaite, lorsque je supprime une ligne de la feuille planning et que je veux également supprimer la ligne du tableau charge K2 j'appuie sur actualiser tableau pour que la ligne #REF soit supprimer, et tout fonctionne. Cependant, en supprimant la ligne, et en remontant les autres lignes, toutes les relations du tableau charge K2 avec la feuille planning sont supprimés. Par conséquent, après avoir actualisé le tableau, lorsque je modifie des infos dans planning, elles ne sont plus modifiés dans le tableau charge K2, ce qui n'est pas le cas avant d'actualiser le tableau. Je pense qu'il me faudrait plus une fonction permettant d'actualiser le tableau charge K2 en fonction de la feuille planning pour permettre de supprimer automatiquement les lignes du tableau charges K2 tout en actualisant par rapport à la feuille planning. Sur la première image on voit bien la relation entre les deux feuilles avec PLANNING!B4 mais après avoir supprimé une ligne de la feuille planning et avoir actualisé le tableau charge k2, on remarque sur la seconde image que la relation n'existe plus et c'est juste le texte qui apparait dans la case. A noter que j'ai besoin que toutes les cases du tableau charge K2 soit en permanence en relation avec la feuille PLANNING. Je vous joins également le fichier pour que vous puissiez tester par vous même.

capture d ecran 2024 04 30 103723 capture d ecran 2024 04 30 104049

Je m'excuse d'avance si mes explications sont un peu brouillons. N'hésitez pas à me posez des questions pour éclaircir les zones d'ombres et je tiens à vous remercier d'avance pour vos réponses.

Bonjour LouReed, Ausecour, xorsankukai,

Je me permets de vous relancer car je n'arrive pas à résoudre mon problème et votre aide me serait d'une grande utilité.

Merci par avance pour votre réponse.

Bonjour Ennzzo_17, le forum,

Quels sont tes critères pour remplir le tableau K2 ?

Cordialement,

Bonjour,

Tout d'abord, merci pour ta réponse xorsankukai.

Il faut simplement que les éléments du tableauk2, qui sont des éléments en relation avec la feuille planning (chantier, date, reste à tailler), reste toujours en relation avec cette feuille, même lorsqu'une ligne entière est supprimée dans la feuille planning. Et il faut également que cette ligne supprimé dans la feuille planning soit supprimé dans le tableauk2.

Re,

Un essai...en supposant que tu souhaites les lignes 2 à 94 de la feuille planning...

3ennzo17.xlsm (155.29 Ko)

Le code est dans le module de la feuille Charge K2 et s'exécute à son activation....

Cordialement,

Bonjour Xorsankukai,

Merci beaucoup pour votre réponse, mais cela serait il possible d'avoir le script car je ne le trouve pas dans le fichier excel et j'aimerai faire en sorte qu'il s'éxécute en appuyant sur un bouton.

Merci par avance pour votre réponse.

J'ai finalement trouvé comment faire, merci beaucoup pour votre aide !!

Rechercher des sujets similaires à "vba suppression lignes tableau condition"