Effacer des lignes suivant des valeurs

Bonjour,

Je bloque sur ces problèmes :

  • Je souhaite que si en colonne O, j'ai A ou B ou C, on efface les lignes entre A et N.
  • je souhaite remplacer 36 par le nombre de ligne non vide en colonne A For Lig = 9 To 36.

Dans le fichier joint, j'ai bricolé cette macro grâce à une autre que Banzai m'avait fourni.

Sub Efface()
Dim Lig As Integer
Dim Msg As String
Msg = "Opération irréversible. Voulez vous continuer ? " & Msg
  If MsgBox(Msg, vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then
    Application.ScreenUpdating = False
    For Lig = 9 To 36 'je cherche à remplacer 36 par le nombre de ligne non vide en colonne A
      If Cells(Lig, 15) = "A" Then ' Comment faire en sorte que ce soit "A" ou "B" ou "C" ?
        Range("A" & Lig & ":N" & Lig).ClearContents
      End If
    Next Lig
  End If
End Sub

Bonjour

Comme tu as une cellule vide en colonne A et dont la ligne n'est pas effacée (voir ligne 33) le tri en fonction de la colonne A n'est pas efficace

En plus en colonne O tu as une cellule vide (O27) un tri simple sur la colonne O ne suffit pas

Donc un tri sur le critère Colonne A et sur le critère Colonne O

A tester

Merci Banzai, ça fonctionne niquel

Pourquoi par contre Dim Lig As Long à la place de Dim Lig As Integer ?

Bonjour

Bien que dans ce cas cela soit inutile, c'est une habitude que j'ai prise (et que j'essaye de garder) que les variables qui peuvent dépasser 32 000 et quelques soient déclarées en Long

Et même sur 2003 le nombre de ligne dans une feuille est supérieur à cette valeur

Et on n'est pas à 2 octets de plus pour le stockage en mémoire de la valeur

2 pour Integer

4 pour Long

Merci pour l'info

Rechercher des sujets similaires à "effacer lignes suivant valeurs"