VBA - Suppression ligne dans Table Excel

Bonjour à tous,

Avec l'aide de certains membres du Forum j'ai réussi à créer un bouton afin d'ajouter une ligne au même endroit, et en gardant les formules associées, dans 2 tableaux situaient chacun dans une feuille différente (cf. exemple en PJ) et uniquement lorsque la cellule sélectionnée est située dans le tableau de la feuille 1.

Je souhaite maintenant faire de même mais pas ajouter une ligne mais la supprimer (dans les deux tableaux). Comme pour l'insertion je veux que lorsque je suis en dehors du tableau, on ne puisse pas supprimer la ligne. J'ai fait un petit bout de code qui fonctionne pour supprimer les deux lignes mais qui ne bloque pas le fait qu'on puisse supprimer en dehors des tableaux prédéfinis.

Sub Bouton2_Clic()

Cells(ActiveCell.Row, ActiveCell.Column).EntireRow.Delete

Sheets(2).Cells(ActiveCell.Row, ActiveCell.Column).EntireRow.Delete

End Sub

Je ne suis pas contre un petit coup de main

Merci d'avance.

23exemple.xlsm (50.54 Ko)

Bonsoir,

Ci-joint une proposition à tester

Bonne soirée

Bouben

34exemple-v0-1.xlsm (58.27 Ko)

Bonjour,

Une autre proposition avec la modification du code initial.

Mais il faudra nous expliquer les relations entre les 2 tableaux.

Cdlt.

Option Explicit

Dim lo As ListObject
Dim ACell As Range
Dim lRow As Long

Public Sub Bouton1_Clic()

    Set ACell = ActiveCell
    Set lo = Me.ListObjects(1)

    If ACell.ListObject Is Nothing Then
        MsgBox "Veuillez sélectionner une cellule du tableau.", vbInformation
        GoTo exit_Handler
    End If

    With lo
        lRow = ACell.Row - .HeaderRowRange.Row + 1
        .ListRows.Add Position:=lRow
    End With

    With Worksheets(2)
        .ListObjects(1).ListRows.Add Position:=lRow
    End With

exit_Handler:
    Set lo = Nothing: Set ACell = Nothing

End Sub

Public Sub Bouton2_Clic()
Dim Message As String, Title As String
Dim Default As VbMsgBoxStyle
Dim Response As VbMsgBoxResult

    Set ACell = ActiveCell
    Set lo = Me.ListObjects(1)

    If ACell.ListObject Is Nothing Then
        MsgBox "Veuillez sélectionner une cellule du tableau.", vbInformation
        GoTo exit_Handler
    End If

    lRow = ACell.Row - lo.HeaderRowRange.Row

    Message = "Veuillez confirmer la suppression de la ligne " & lRow & " du tableau."
    Title = "Suppression ligne"
    Default = vbOKCancel + vbQuestion
    Response = MsgBox(Message, Default, Title)

    If Response = vbCancel Then GoTo exit_Handler

    With lo
        .ListRows(lRow).Range.Delete
    End With

    With Worksheets(2)
        .ListObjects(1).ListRows(lRow).Range.Delete
    End With

exit_Handler:
    Set lo = Nothing: Set ACell = Nothing

End Sub

Merci à vous deux pour vos réponses. A priori je vais utiliser la fonction de Jean-Eric mais je dois encore faire des tests pour vérifier que tout fonctionne.

Pour te répondre Jean-Eric sur le lien entre les deux tableaux c'est que le 1er tableau est utilisé pour rentrer les paramètres (le nom de l'activité, le nombre d'heures par activité, le nbre d'activité pour chaque année etc.) et le 2nde tableau contient des formules qui utilisent les données d'entrées du 1er tableau et qui me donne les résultats pour chaque activité. Du coup lorsque j'ajoute une activité dans le 1er tableau je veux également avoir une ligne qui se créée au même endroit dans le tableau 2.

Je vais faire mes tests et je reviens si j'ai un souci mais encore merci pour votre aide.

Rechercher des sujets similaires à "vba suppression ligne table"