Comparaison de 2 colonnes avec divers critère de résultat

Bonjour @scalaze,

J’ai peut-être une solution qui pourrait te convenir.

On garde la méthode de suppression des doublons via le « MsgBox » et on garde aussi la méthode “Référence non attendue” via aussi le « MsgBox » que je ne réexplique pas.

Donc pour qu’il n’y ai pas de cellule vide dans la colonne « C » une macro en complément dans la « Feuil1 » qui positionne automatiquement la première cellule vide a partir la cellule « C4 … » et ainsi de suite en fonction des valeurs entrées dans la colonne « C ».

Macro de la « Feuil1 »

Public DOUBLON As Boolean
Const sRange As String = "$C$4:C$65000"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim PlageB As Range
Dim lgnC As Long

If DOUBLON Then Exit Sub
    If Not Application.Intersect(Target, Columns("C")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Application.CountIf(Range("C:C"), Target) > 1 Then
            MsgBox ("Attention DOUBLON" & Chr(10) & "Ce code existe déjà !" & Chr(10) & _
            "Il sera automatiquement supprimé !")
            DOUBLON = True
                Target.ClearContents
            DOUBLON = False
        End If
    End If
                
    Set PlageB = Range("B4", Range("B" & Rows.Count).End(xlUp))
        For lgnC = Range("C" & Rows.Count).End(xlUp).Row To 4 Step -1
            If Application.CountIf(PlageB, Range("C" & lgnC)) = 0 Then
                If MsgBox("Référence non attendue" & Chr(10) & "Merci de vérifier" & Chr(10) & _
                "Cette Référence sera automatiquement supprimée !") = vbOK Then
                 Range("C" & lgnC).ClearContents
                End If
            End If
        Next lgnC

 End Sub

Private Sub Worksheet_selectionChange(ByVal Target As Range)
Dim nb As Double


    If Not Intersect(Target, Range(sRange)) Is Nothing Then
        If Target.Count > 1 Then Exit Sub

        Application.EnableEvents = False

        nb = Application.CountA(Range(sRange))

        Select Case nb
            Case 0
                Cells(4, 3).Select
            Case 11
                Application.EnableEvents = True
                Exit Sub
            Case Else
                Cells(4, 3).Offset(nb, 0).Select
        End Select

    End If

    Application.EnableEvents = True

End Sub

Si tu as besoin d’effacer les valeurs de la colonne « C », j’ai ajouté une macro associée au bouton « Effacer Col C »

La macro « Effacer Col C »

 Sub Effacer_Col_C()

 Application.ScreenUpdating = False
 
    With Range("C4", Range("C" & Rows.Count).End(xlUp))
        .ClearContents
    End With
    
End Sub

Ton fichier en retour ICI==> Comparaison Valeur 2 colonnes V4.xlsm (365,4 Ko)

Cordialement.

2 « J'aime »

Bonjour mdo100

Pour moi Good job :+1:

je reviendrais vers toi après test au travail.

Cordialement

Bonjour mdo100

Petit retour sur ta dernière proposition est c’est adoptée .:clap:

Un grand Merci pour ton implication et encore BRAVO pour l aide apporté.

Merci également aux contributeurs DocteurExcel, Mimimathy
aussi aux membres du forum

Bien cordialement.

1 « J'aime »