Rechercher une valeur et supprimer SI

Bonjour

Je souhaite créer une macro qui automatise l’action suivante :

Rechercher dans la feuille la ligne sur la laquelle la valeur TCMH est présente.

Sur cette ligne si en colonne H la valeur N est notée : supprimer toute la ligne

Par contre, sur cette ligne, si en colonne H la valeur i ou s est notée : ne rien faire

Merci pour votre aide

Bonjour abougor, le forum,

Un exemple ci-joint, à adapter à ton cas

Sub Effacer()

     Dim I As Integer

         With Sheets("Feuil1")

Application.ScreenUpdating = False

     For I = [B65000].End(xlUp).Row To 1 Step -3

         If Cells(I, 2).Value = "TCMH" And Cells(I, 8).Value = "N" Then  ' 2 et 8 étant les colonnes où se trouvent les valeurs à chercher

            Rows(I).Delete
         End If
     Next I

         End With

End Sub

Une petite variante:

Sub Effacer2()

     Dim I As Integer

         With Sheets("Feuil1")

Application.ScreenUpdating = False

     For I = [B65000].End(xlUp).Row To 1 Step -1

        If Range("B" & I).Value = "TCMH" And Range("H" & I).Value = "N" Then
            Rows(I).Delete
         End If
     Next I

         End With

End Sub

Cordialement,

Bonjour abougor, xorsankukai,

Bonjour tout le monde,

une recherche dès la frappe d'une donnée puisque ni le mode de recherche (bouton, frappe...) ni la localisation de TCMH ne sont précisés...

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iRow As Integer, sData As String
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
iRow = Target.Row
If Not Intersect(Target, Columns("H:H")) Is Nothing Then
    If Target = "N" Then sData = "TCMH"
Else
    If Target = "TCMH" Then sData = "N"
End If
If sData <> "" Then Call Recherche(iRow, sData)
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub

Public Sub Recherche(ByVal iRow As Integer, sData As String)
'
iCol = Cells(iRow, Columns.Count).End(xlToLeft).Column
'
For x = 1 To iCol
    If Cells(iRow, x) = sData Then
        Rows(iRow).EntireRow.Delete shift:=xlUp
        Exit For
    End If
Next
'
End Sub

A+

7tcmh.xlsm (15.68 Ko)

Bonjour

Je n'arrive pas à faire fonctionner ces macros.

J'ai collé mes données sur "abougor effacer2.xlsm" fournie par xorsankukai mais, dès le collage, les macros "effacer" et "effacer 2" n'y fonctionnent plus.

Je n'ai pas vraiment la compétence pour les adapter mais pourtant j'ai l'impression que TCMH et N sont bien dans les colonnes requises.

Ci joint le fichier.

Merci pour votre aide

Salut Abougor,

deux problèmes :

  • en utilisant With dans un code, chaque référence à la feuille concernée doit être précédée d'un point . (ex: .Range)
  • les 'N' en colonne "H" sont suivis d'une espace ce qui fausse le calcul de comparaison.

Voici ton fichier corrigé avec un seul bouton : les deux précédents faisaient identiquement le même travail!

Le code se trouve dans le module de la Feuille1 (contrôle ActiveX).

A+

Merci cela fonctionne bien pour TCMH.

En fait je dois appliquer cette macro pour plusieurs valeurs (une dizaine au total) dont: TCMH, Poly. Eosinophiles, PN...

En reprenant le code rédigé pour TCMH et pour tester avec une seconde valeur j'ai écrit cela.

Inutile de vous dire que cela ne fonctionne pas...

Vous vous m'aider à le corriger ?

Sub Masquer()

iRow = Range("B" & Rows.Count).End(xlUp).Row
For x = iRow To 5 Step -1
    If Trim(Cells(x, 2)) = "TCMH" And Trim(Cells(x, 8)) = "N" Then Rows(x).EntireRow.Delete shift:=xlUp
Next

iRow = Range("B" & Rows.Count).End(xlUp).Row
For x = iRow To 5 Step -1
    If Trim(Cells(x, 2)) = "Poly. Eosinophiles" And Trim(Cells(x, 8)) = "N" Then Rows(x).EntireRow.Delete shift:=xlUp
Next

End Sub

Bonsoir Abougor,

Bonsoir le forum,

normal que ça n'aille pas : ton 'Poly. Eosinophiles' est en colonne "C" donc...

For x = iRow To 5 Step -1

If Trim(Cells(x, 3)) = "Poly. Eosinophiles" And Trim(Cells(x, 8)) = "N" Then Rows(x).EntireRow.Delete shift:=xlUp

Next

Fais d'abord l'inventaire des cas d'effacement de ligne (libellé, colonne) et reviens vers nous que l'on puisse te proposer une solution globale.

La boucle FOR...NEXT sera alors organisée pour couvrir tous les cas en une volée!

A+

Super. Avec les bonnes colonnes c'est certain ça marche mieux...

J'ai réussi à me débrouiller pour les suppressions de lignes successives.

Ma macro fonctionne bien.

Un grand merci

Rechercher des sujets similaires à "rechercher valeur supprimer"