Rechercher une valeur et supprimer SI Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
A
Abougor
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 15 août 2017
Version d'Excel : 2016

Message par Abougor » 7 septembre 2017, 07:49

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
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'473
Appréciations reçues : 137
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 7 septembre 2017, 08:57

Bonjour abougor, le forum,

Un exemple ci-joint, à adapter à ton cas :wink:
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
     
        [surligner]If Range("B" & I).Value = "TCMH" And Range("H" & I).Value = "N" Then[/surligner]
            Rows(I).Delete
         End If
     Next I


         End With

End Sub
Cordialement,
abougor effacer2.xlsm
(19.27 Kio) Téléchargé 9 fois
abougor effacer.xlsm
(18 Kio) Téléchargé 3 fois
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Avatar du membre
curulis57
Membre impliqué
Membre impliqué
Messages : 2'826
Appréciations reçues : 90
Inscrit le : 4 janvier 2016
Version d'Excel : 2013 FR

Message par curulis57 » 7 septembre 2017, 09:22

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+
TCMH.xlsm
(15.68 Kio) Téléchargé 7 fois
A
Abougor
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 15 août 2017
Version d'Excel : 2016

Message par Abougor » 9 septembre 2017, 14:55

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
abougor effacer2.xlsm
(23.99 Kio) Téléchargé 3 fois
Avatar du membre
curulis57
Membre impliqué
Membre impliqué
Messages : 2'826
Appréciations reçues : 90
Inscrit le : 4 janvier 2016
Version d'Excel : 2013 FR

Message par curulis57 » 9 septembre 2017, 16:14

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+
abougor effacer2.xlsm
(24.88 Kio) Téléchargé 5 fois
A
Abougor
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 15 août 2017
Version d'Excel : 2016

Message par Abougor » 9 septembre 2017, 18:31

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
Avatar du membre
curulis57
Membre impliqué
Membre impliqué
Messages : 2'826
Appréciations reçues : 90
Inscrit le : 4 janvier 2016
Version d'Excel : 2013 FR

Message par curulis57 » 9 septembre 2017, 19:05

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+
A
Abougor
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 15 août 2017
Version d'Excel : 2016

Message par Abougor » 9 septembre 2017, 22:14

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message