Bug supprimer ligne entière selon critère

Bonjour,

j'ai fait un bouton permettant de supprimer toutes les lignes du Tableau4 contenant le mot de la cellule sélectionnée en Tableau5 (ActiveCell).

Mon bouton est défaillant. En effet, ce code fonctionne pour la plupart des mots, SAUF par exemple pour le mot "GIE", où le code me supprime une grande partie des cellules de ma feuille.

Qu'en pensez-vous ?

Dim i As Integer

With ThisWorkbook.Sheets("COMMANDE")

For i = .Range("H" & .Rows.Count).End(xlUp).Row To 2 Step -1

If .Range("H" & i).Value = ActiveCell.Value Then

.Rows(i).Delete

End If

Next i

End With

End If

Bonjour

je pense qu'en remplaçant :

  For i = .Range("H" & .Rows.Count).End(xlUp).Row To 2 Step -1

par

            For i = .Range("H" & .Rows.Count).End(xlUp).Row To 14 Step -1

en effet tu par de la ligne 23, fin de ton tableau de données, pour remonter vers la ligne 2, tu dois arrêter l'exécution à la ligne 14.

Si j'ai bien compris ton pbl.

Cordia5

Bonjour,

Essaie ainsi :

Private Sub Imp_partielle_Click()
Dim ACell As Range, n As Long, i As Long
    Application.ScreenUpdating = False
    Set ACell = ActiveCell
    If ACell.ListObject Is Nothing Then Exit Sub
    If ACell.ListObject.Name = "Tableau5" And Len(ACell) > 0 Then
        With ActiveSheet.ListObjects("Tableau4")
            n = .ListRows.Count
            For i = n To 1 Step -1
                If .ListRows(i).Range.Cells(1, 8).Value = ACell.Value Then .ListRows(i).Delete
            Next i
        End With
    End If
End Sub

bonjour

salut Cordias, Jean-Eric

on ne supprime JAMAIS de données*, tout comme on ne recopie jamais de données.

trop complexe, trop dangereux

on se contente de filtrer (Excel dispose de plusieurs méthodes pour cela)

* on peut néanmoins corriger au clavier les erreurs de saisie dans la table des données originales.

amitiés à tous

Bonjour

je pense qu'en remplaçant :

  For i = .Range("H" & .Rows.Count).End(xlUp).Row To 2 Step -1

par

            For i = .Range("H" & .Rows.Count).End(xlUp).Row To 14 Step -1

en effet tu par de la ligne 23, fin de ton tableau de données, pour remonter vers la ligne 2, tu dois arrêter l'exécution à la ligne 14.

Si j'ai bien compris ton pbl.

Cordia5

Et oui, tout simplement... !!

Ça m'apprendra à récupérer des lignes de codes par-ci par-là, sans chercher à les comprendre !!

Merci =)

Bonjour,

Essaie ainsi :

Private Sub Imp_partielle_Click()
Dim ACell As Range, n As Long, i As Long
    Application.ScreenUpdating = False
    Set ACell = ActiveCell
    If ACell.ListObject Is Nothing Then Exit Sub
    If ACell.ListObject.Name = "Tableau5" And Len(ACell) > 0 Then
        With ActiveSheet.ListObjects("Tableau4")
            n = .ListRows.Count
            For i = n To 1 Step -1
                If .ListRows(i).Range.Cells(1, 8).Value = ACell.Value Then .ListRows(i).Delete
            Next i
        End With
    End If
End Sub

Merci pour cette seconde solution plus flexible que la mienne !!

Problème résolu !!

Rechercher des sujets similaires à "bug supprimer ligne entiere critere"