Macro recherchev et si valeur inconnue alors masquer ligne

Salut le forum,

J'aimerais par la voix d'une macro effectuer une formule telle que :

- si dans ma feuil1 colonne A de la ligne 13 a la dernière ligne de ma colonne A,

je trouve la même valeur exacte dans ma colonne C de ma feuil2 alors ne rien faire

- si dans ma feuil1 colonne A de la ligne 13 a la dernière ligne de ma colonne A,

je n'ai pas de correspondance (valeur exacte) avec ma colonne C de ma feuil2 alors masquer la ligne entière.

Je pensais à un Si incluant un recherchev mais je ne sais pas comment l'écrire.

Merci d'avance pour toute aide

Cordialement

Bonjour,

Je ne connait pas trop la fonction rechercheV pour être honnête, mais je pense que ce que tu voudrais est plus simple en utilisant une for.

Voici le code que je te propose :

Sub masqueLignes()
    Dim i As Long

    With ThisWorkbook
        For i = 13 To .Sheets(1).Rows.Count
            If .Sheets(1).Cells(i, 1) <> .Sheets(2).Cells(i, 3) Then
                .Sheets(1).Rows(i).EntireRow.Hidden = True
            End If
        Next
    End With
End Sub

Ce code masque la ligne entière dans la feuille 1, modifie le un peu si tu voulais masquer la ligne dans la feuille 2.

Le seul problème, c'est que le code est long à exécuter, parce que tu teste quand même plus d'un million de valeurs, avec celui-ci, tu ne teste pas l'intégralité de la colonne, mais seulement les cases remplies de la colonne A :

Sub masqueLignes()
    Dim i As Long
    Dim fin As Long

    With ThisWorkbook.Sheets(1)
        fin = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With

    With ThisWorkbook
        For i = 13 To fin
            If .Sheets(1).Cells(i, 1) <> .Sheets(2).Cells(i, 3) Then
                .Sheets(1).Rows(i).EntireRow.Hidden = True
            End If
        Next
    End With
End Sub

Bonjour,

un début comme ceci ...

et certainement d'autres réponses avant ou après moi

P.

20jeff.xlsm (16.64 Ko)

Bonjour,

Une piste avec CountIf relativement rapide :

Sub Test()

    Dim PlageFe_1 As Range
    Dim PlageFe_2 As Range
    Dim Cel As Range

    'en colonne A à partir de la ligne 13
    With Worksheets("Feuil1")

        Set PlageFe_1 = .Range(.Cells(13, 1), .Cells(.Rows.Count, 1).End(xlUp))

    End With

    'en colonne C à partir de la ligne 1
    With Worksheets("Feuil2")

        Set PlageFe_2 = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))

    End With

    For Each Cel In PlageFe_1

        If Application.WorksheetFunction.CountIf(PlageFe_2, Cel.Value) <> 0 Then Cel.EntireRow.Hidden = True

    Next Cel

End Sub

Hervé.

Rechercher des sujets similaires à "macro recherchev valeur inconnue masquer ligne"