Rechercher une valeur dans une plage et conditions

Bonjour,

Le sujet existe sur le forum et pourtant cela ne fonctionne pas pour ma macro. Pourriez-vous me donner un coup de main s'il vous plaît. Je souhaite rechercher une valeur dans une plage de données, si elle existe la macro fait telle action si cette valeur n'existe pas je supprime les feuillets "travail".

Ci-dessous le bout de code en bleu qui me pose souci :

'Je recherche la valeur exacte "NouveauES" dans la colonne C

Set plagerecherche = Columns("C:C").Find("NouveauES", lookat:=xlWhole)

If plagerecherche Is Nothing Then 'Si aucune valeur trouvée on supprime les feuillets travail

With Application

.DisplayAlerts = False

End With

Sheets("travail").Delete

Sheets("travail bis").Delete

Application.DisplayAlerts = True

ActiveSheet.Protect Password:="EP13", DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFiltering:=True

Application.ScreenUpdating = True

MsgBox "Aucune entrées/sorties"

Else 'PAR CONTRE si on trouve des valeurs, on filtre

'Filtre "NouveauES"

ActiveSheet.Range("$A$1:$C$1" & LastLignetravailbis).AutoFilter Field:=3, Criteria1:="NouveauES"

'On les copie

ActiveSheet.Range("B2:B" & LastLignetravailbis).SpecialCells(xlVisible).Copy

'On se positionne dans le feuillet travail et on les colle

Sheets("travail").Select

ActiveSheet.Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

'On compte le nombre de ligne

LastLigneNewFeuille = Sheets("travail").Range("B" & Rows.Count).End(xlUp).Row

'On applique le filtre avancé à l'aide de la feuille travail

'On sélectionne dans le feuillet eP13 tous les NNI ayant une valeur #N/A qui ont été collés dans le feuillet travail

Sheets("e P13").Select

Range("A12:AC" & LastLigne).AdvancedFilter xlFilterInPlace, CriteriaRange:=Sheets("travail").Range("A1:AC" & LastLigneNewFeuille), unique:=False

ActiveSheet.Range("A12").Select

'Permet de supprimer les feuillets sans message d'alerte

With Application

.DisplayAlerts = False

End With

'Suppression des feuillets travail et travail bis

Sheets("travail").Delete

Sheets("travail bis").Delete

'Réactive le message d'alerte

Application.DisplayAlerts = True

'Réactive le mot de passe

ActiveSheet.Protect Password:="EP13", DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFiltering:=True

Application.ScreenUpdating = True

End If

Merci pour votre aide !

Ippo

Bonjour et bienvenue sur le forum,

Il est d'usage de fournir un fichier exemple avec la demande afin de faciliter le travail de ceux qui répondent.

A première vue, le code en bleu devrait fonctionner.

Est-ce que tu as les bons noms de feuilles?

Peux tu en joindre un ? Merci

Cordialement,

Bonjour,

Merci pour ton retour, j'ai anonymisé le fichier je n'avais pas pu le faire hier soir. Le but étant de faire ressortir "Pastèque" qui n'a pas de ligne "écart" renseignée.

Pour voir la macro => Sub Filtre_entrées_sorties()

Le nom des feuilles est correct.

re,

Je viens de regarder ton fichier. C'est une usine à gaz où je me perds.

Dans la feuille travail, "N#A" te permet d'identifier la ligne.

Dans la feuille EP13 le "0" en colonne E te permet d'identifier la ligne.

Tu peux éventuellement faire une nouvelle MFC pour repérer la ligne en erreur.

Pour ma part, je ne pourrais pas t'aider au-delà de ces quelques conseils.

Relance un nouveau fil, tu auras peut-être plus de chance. A moins qu'un costaud lise le message et prenne la suite.

Bonne continuation.

Cordialement,

Merci ddetp88 d'avoir jeté un coup d’œil. J'ai trouvé un moyen de contourner au lieu d'utiliser Find et qui remplace mon code en bleu. Si cela peut aider :

With Sheets("travail bis")
        Set plagerecherche = .Range(.Cells(2, 3), .Cells(LastLignetravailbis, 3))
End With

If IsError(Application.Match("NouveauES", plagerecherche, 0)) Then

    With Application
    .DisplayAlerts = False
    End With

    Sheets("travail").Delete
    Sheets("travail bis").Delete
    Application.DisplayAlerts = True

       ActiveSheet.Protect Password:="EP13", DrawingObjects:=True, Contents:=True, Scenarios:=True _
       , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFiltering:=True
    Application.ScreenUpdating = True

    MsgBox "Aucune entrées/sorties"

Else 'PAR CONTRE si on trouve des valeurs NA on filtre

'Filtre les nouveauES
ActiveSheet.Range("$A$1:$C$1" & LastLignetravailbis).AutoFilter Field:=3, Criteria1:="NouveauES"

Bien penser au "End if" à la fin

Rechercher des sujets similaires à "rechercher valeur plage conditions"