VBA - Supprimer ligne en fonction d'une variable

Bonjour à tous,

Je souhaiterais une macro capable de supprimer la ligne où la valeur que ce soit du texte ou chiffre ou NA() ou erreur dans une plage de cellule choisie par l'utilisateur renseigné dans une input box.

Sub rows_value()

Dim cell As Range
Dim vcellule As Variant

 vcellule = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & _
 "Entrez la valeur ou le texte souhaité à supprimer")

 If vcellule = "" Then Exit Sub

 Application.ScreenUpdating = False

    For Each cell In ActiveSheet.UsedRange
        If cell.Value = vcellule Then
        cell.EntireRow.Delete
        End If
    Next cell

 Application.ScreenUpdating = True

 End Sub

J'ai tenté ceci mais il n'y a que le texte qui fonctionne...

Avez vous une solution astuce pour me mettre sur la voie?

Merci de m'avoir lu et bonne soirée

Bonjour,

une proposition de solution basée sur ton code supprime toutes les lignes contenant le mot recherché (sauf si le mot se trouve dans 2 lignes successives, dans ce cas seule une ligne est supprimée. Est-ce effectivement ce que tu souhaites obtenir comme résultat ?

Sub rows_value()

    Dim cell As Range
    Dim vcellule As Variant

    vcellule = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & _
                        "Entrez la valeur ou le texte souhaité à supprimer, ou iserror or isna")
    If UCase(vcellule) = "ISERROR" Then cas = 1 Else cas = 3
    If UCase(vcellule) = "ISNA" Then cas = 2
    If vcellule = "" Then Exit Sub

    Application.ScreenUpdating = False

    For Each cell In ActiveSheet.UsedRange
        Select Case cas
        Case 1
            If IsError(cell) Then
                cell.EntireRow.Delete
            End If
        Case 2
            If Application.WorksheetFunction.IsNA(cell) Then
                cell.EntireRow.Delete
            End If
        Case Else
            If cell.Value = vcellule Then
                cell.EntireRow.Delete
            End If
        End Select
    Next cell

    Application.ScreenUpdating = True

End Sub

Salut,

Merci pour ta proposition et réflexion. Mais je souhaite vraiment supprimer toutes les lignes.

Si deux lignes successives avec #N/A, je souhaite qu'elles disparaissent toutes les deux...

Est ce possible?

Cdt

Julien

bonsoir,

une version adaptée

Sub rows_value()

    Dim cell As Range
    Dim vcellule As Variant

    vcellule = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & _
                        "Entrez la valeur ou le texte souhaité à supprimer, ou iserror or isna")
    If UCase(vcellule) = "ISERROR" Then cas = 1 Else cas = 3
    If UCase(vcellule) = "ISNA" Then cas = 2
    If vcellule = "" Then Exit Sub

    Application.ScreenUpdating = False
    With ActiveSheet
        For i = .UsedRange.Rows.Count To 1 Step -1
            For Each cell In .Range(.Cells(i, 1), .Cells(i, .Cells(i, Columns.Count).End(xlToLeft).Column))
                Select Case cas
                Case 1
                    If IsError(cell) Then
                        cell.EntireRow.Delete
                    End If
                Case 2
                    If Application.WorksheetFunction.IsNA(cell) Then
                        cell.EntireRow.Delete
                    End If
                Case Else
                    On Error GoTo terreur
                    If cell.Value = vcellule Then
                        cell.EntireRow.Delete
                    End If
ici:
                    On Error GoTo 0
                End Select
            Next cell
        Next i
    End With
    Application.ScreenUpdating = True
    Exit Sub
terreur:
    Resume ici
End Sub

Merci beaucoup,

Testé et approuvé.

Maintenant je vais essayer de décrypter ton code et d'apprendre grâce à toi un peu plus en VBA.

Thanks et bonne continuation.

Rechercher des sujets similaires à "vba supprimer ligne fonction variable"