Lancer macro quand je supprime des lignes d'un tableau

Bonjour à tous,

j'ai un souci, je n'arrive pas à lancer une macro si je supprime des lignes d'une plage de cellules excel.

J'ai essayé avec Private Sub Worksheet_Change(ByVal Target As Range) mais ça ne marche pas.

Par exemple en "V41:AP50" j'ai mon tableau avec mes données.

Je précise que ce tableau peut avoir son nombre de lignes qui varie (ce que je gère).

Lorsque j'efface par exemple les lignes "V48:AP50" ou n'importe quel autres lignes à l'intérieur de "V41:AP50", j'aimerai que ma macro s'exécute.

En fait dès que j'ai une cellule vide dans la colonne "V" de la plage de mon tableau, j'aimerai que la macro s'exécute.

Vous avez des idées ?

Merci d'avance de votre aide.

A+

Wolf76

Bonjour,

Essayez l'événement change dans le module de votre onglet :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim I As Integer

     If Target.Count > 1 Then Exit Sub

     If Not Intersect(Target, Range("V41:V50")) Is Nothing Then
        For I = 50 To 41 Step -1
            If WorksheetFunction.CountA(Range(Cells(I, "V"), Cells(I, "AP"))) = 0 Then
               Range(Cells(I, "V"), Cells(I, "AP")).Delete
            End If
        Next I
     End If

End Sub

Salut Eric,

Merci pour ton code.

Néanmoins, quand je sélectionne la ligne complète V43:AP43 et que j'appuie sur suppr avec le clavier, les cellules sont bien effacées (normal) mais la ligne reste en jaune. C'est comme si il ne se passait rien.

Il faut ensuite que j'aille en cellule V43 et que j'appuie sur suppr pour que la ligne entière disparraisse.

Or il faut que lorsque que je sélectionne cette ligne entière ou une autre plage du tableau et que je fais suppr avec le clavier, ma macro se lance.

Des idées ?

Merci d'avance.

A+

Wolf76

Remplacez l'événement par :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim I As Integer

     'If Target.Count > 1 Then Exit Sub

     If Not Intersect(Target, Range("V41:V50")) Is Nothing Then
        Application.EnableEvents = False
        For I = 50 To 41 Step -1
            If Cells(I, "V") = "" Then
               Range(Cells(I, "V"), Cells(I, "AP")).Delete
            End If
        Next I
        Application.EnableEvents = True
     End If

End Sub

Salut Eric,

Merci pour ce nouveau code, ça fonctionne parfaitement.

You're the best.

Bonne soirée.

Wolf76

Rechercher des sujets similaires à "lancer macro quand supprime lignes tableau"