[VBA] Macro pour supprimer une ligne si la colonne A comprends une lettre

bonjour,
Je débute en VBA et je bloque sur quelque chose qui me semble assez simple.

J'ai besoin de supprimer une ligne dont la première colonne (A) contient autre chose que des chiffres (ne doivent rester que les lignes dont cette case est composée d'une suite de 6 chiffres pour être précis).

J'ai déployé le code suivant qui fonctionne mais qui est un peu capilo-tracté :

Sub Macro1()
Dim i As Integer
For i = Range("a65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "a*" Then Rows(i).Delete
If Range("A" & i) Like "b*" Then Rows(i).Delete
If Range("A" & i) Like "c*" Then Rows(i).Delete
If Range("A" & i) Like "d*" Then Rows(i).Delete
If Range("A" & i) Like "e*" Then Rows(i).Delete
If Range("A" & i) Like "f*" Then Rows(i).Delete
If Range("A" & i) Like "g*" Then Rows(i).Delete
If Range("A" & i) Like "h*" Then Rows(i).Delete
If Range("A" & i) Like "i*" Then Rows(i).Delete
If Range("A" & i) Like "j*" Then Rows(i).Delete
If Range("A" & i) Like "k*" Then Rows(i).Delete
If Range("A" & i) Like "l*" Then Rows(i).Delete
If Range("A" & i) Like "m*" Then Rows(i).Delete
If Range("A" & i) Like "n*" Then Rows(i).Delete
If Range("A" & i) Like "o*" Then Rows(i).Delete
If Range("A" & i) Like "p*" Then Rows(i).Delete
If Range("A" & i) Like "q*" Then Rows(i).Delete
If Range("A" & i) Like "r*" Then Rows(i).Delete
If Range("A" & i) Like "s*" Then Rows(i).Delete
If Range("A" & i) Like "t*" Then Rows(i).Delete
If Range("A" & i) Like "u*" Then Rows(i).Delete
If Range("A" & i) Like "v*" Then Rows(i).Delete
If Range("A" & i) Like "w*" Then Rows(i).Delete
If Range("A" & i) Like "x*" Then Rows(i).Delete
If Range("A" & i) Like "y*" Then Rows(i).Delete
If Range("A" & i) Like "z*" Then Rows(i).Delete
Next i
End Sub

Qui check s'il y à n'importe quelle lettre de l'alphabet et supprime la case mais le code au delà d'être optimisé avec les pieds (les miens), n'est pas exactement ce que j'aimerais (garder uniquement les suites de 6 chiffres).
Pour l'instant ça fait l'affaire, les cases étant à supprimer comportant forcément une lettre...

Pourriez vous m'aider à optimiser ça ?

Bonjour François,

Peut-être comme ceci :

Sub Macro2()
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If Len(Range("A" & i).Value) <> 6 And IsNumeric(Range("A" & i).Value) = False Then
            Rows(i).Delete
        End If
    Next
End Sub

Merci Antoine, déjà c'est un super début, cependant, les codes inférieurs à 6 chiffres restent en place.
Pour ce dont j'ai besoin c'est déjà très efficace cependant pour palier à toute éventuelle erreur, si nous pouvions trouver le moyen de verifier la présence de 6 chiffres, cela rendrait le code parfait !

Bonjour,

En reprenant le code d'Antoine, remplacer And par Or ? Ce qui supprimera aussi les lignes qui ont + que 6 chiffres.

Sub Macro2()
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If Len(Range("A" & i).Value) <> 6 Or IsNumeric(Range("A" & i).Value) = False Then
            Rows(i).Delete
        End If
    Next
End Sub

Yes!

Bien vu Thrrybo !

il faut remplacer And par Or dans la condition du If

Vous êtes des champions, c'est top !

Rechercher des sujets similaires à "vba macro supprimer ligne colonne comprends lettre"