VBA - suppresion de ligne si valeur non uniquement numérique

Bonsoir à toutes et tous,

Je souhaiterai supprimer en VBA les lignes d'un fichier ne contenant pas UNIQUEMENT une suite numérique dans la colonne A.

Je vous adresse un fichier pour plus de compréhension, un grand merci par avance pour votre aide.

Une bonne soirée.

Bonjour,

Un exemple :

Public Sub DeleteRows()
Dim lastRow As Long, lRow As Long
    Application.ScreenUpdating = False
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For lRow = lastRow To 1 Step -1
            If IsEmpty(.Cells(lRow, 1)) Or Not IsNumeric(.Cells(lRow, 1)) Then .Cells(lRow, 1).Resize(, 2).Delete
        Next lRow
    End With
End Sub

Merci beaucoup Jean-Eric, cela fonctionne parfaitement.

Une bonne soirée à toi.

Bonsoir Jean-Eric,

J'ai besoin de d'un complémént à ta macro.

En plus de ce qu'elle fait initialement, je souhaiterai également supprimer la ligne entière si dans une cellule la macro détecte la mention :

ESL

EQD

En t'en remerciant bien par avance.

Bonne soirée.

Bonjour,

Essaie ainsi :

Public Sub DeleteRows()
Dim lastRow As Long, lRow As Long
    Application.ScreenUpdating = False
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For lRow = lastRow To 1 Step -1
            Select Case True
                Case .Cells(lRow, 1).Value = "ESL" Or .Cells(lRow, 1).Value = "EQD":
                .Cells(lRow, 1).EntireRow.Delete
                Case IsEmpty(.Cells(lRow, 1)) Or Not IsNumeric(.Cells(lRow, 1)):
                .Cells(lRow, 1).Resize(, 2).Delete
            End Select
        Next lRow
    End With
End Sub

Merci Jean-Eric pour ce retour, j'ai collé ta macro mais rien n'y fait.

Je pense que c'est dû au fait qu'il y ait des caractères supplémentaires sur EQD et ESL par ailleurs ces données sont dans la colonne 4.

J'ai modifié mon fichier exemple avec des couleurs et annotations pour plus de précisions. En onglet 2 le tableau initial si le test foire.

Pour être honnête, j'ai tenté avec :

      
Case .Cells(lRow, 4).Value = "ESL" Or .Cells(lRow, 4).Value = "EQD":
.Cells(lRow, 4).EntireRow.Delete

Merci pour ton aide.

Bonjour,

Une nouvelle proposition.

Cdlt.

Public Sub DeleteRows()
Dim lastRow As Long, lRow As Long
    Application.ScreenUpdating = False
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For lRow = lastRow To 1 Step -1
            Select Case True
                Case .Cells(lRow, 3).Value Like "ESL*" Or .Cells(lRow, 3).Value Like "EQD*":
                '.Cells(lRow, 1).Resize(1, 5).Delete
                .Cells(lRow, 1).EntireRow.Delete
                Case IsEmpty(.Cells(lRow, 1)) Or Not IsNumeric(.Cells(lRow, 1)):
                .Cells(lRow, 1).Resize(1, 5).Delete
            End Select
        Next lRow
    End With
End Sub

Bonjour Jean-Eric,

C'est super, cela fonctionne parfaitement.

Une bonne soirée à toi.

Rechercher des sujets similaires à "vba suppresion ligne valeur uniquement numerique"