Option Explicit
Sub famu()
Dim monDico1 As Object, a(), c, i As Long, Messg As String
Dim monDico2 As Object, b()
'Ici on entre les lettres des colonnes concernées dans des constantes
Const Col1 As String = "A" 'Col1 = "A" ==> on va travailler avec la colonne A
Const Col2 As String = "B" 'Col2 = "B" ==> on va travailler avec la colonne B
With Sheets("Feuil1") 'A ADAPTER ==> Nom de la 1ère feuille
.Activate
i = 1 ' Si votre colonne A comporte une ligne d'entête remplacer 1 par 2 :
a = Range(Col1 & i & ":" & Col1 & Range(Col1 & Rows.Count).End(xlUp).Row)
Set monDico1 = CreateObject("Scripting.Dictionary")
For Each c In a
monDico1(c) = i
i = i + 1
Next c
End With
With Sheets("Feuil2") 'A ADAPTER ==> Nom de la 2nde feuille
.Activate
i = 1 ' Si votre colonne A comporte une ligne d'entête remplacer 1 par 2 :
b = Range(Col2 & i & ":" & Col2 & Range(Col2 & Rows.Count).End(xlUp).Row)
Set monDico2 = CreateObject("Scripting.Dictionary")
For Each c In b
monDico2(c) = i
i = i + 1
Next c
End With
Sheets("Feuil1").Activate
Messg = "Il manque, dans la colonne " & Col2 & " : "
For Each c In a
'création du message avec les "absents" en colonne B
If Not monDico2.exists(c) Then Messg = Messg & Chr(10) & "- " & c
Next c
Sheets("Feuil2").Activate
MsgBox Messg
For Each c In b
If Not monDico1.exists(c) Then
'masquer les lignes colonnes B des données absentes colonne A
Rows(monDico2(c)).Hidden = True
End If
Next c
End Sub