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


#1

Bonjour,

Dans une feuil Excel ,j ai un tableau avec 2 colonnes

Colonne B de B4 à B800 mes références produits.
Colonne C de C2 à C800 les références qui seront ajouté aléatoirement

Chaque référence est unique ,il ne peut y avoir de doublon.
Exemple de référence P42558 , P88555 ect…

Je cherche à faire en VBA
si en colonne C la référence est présente en B on colorie la cellule B en vert
si en colonne C la référence a déjà été trouver msgbox " doublon"
si en colonne C la référence n est pas présente en colonne B alors message " référence non attendu"

Merci d avance pour votre aide.
Cordialement


#2

Bonjour!

Je ne suis pas sur d’avoir bien compris ta question.
Pourrais tu nous donner plus de détails stp et si possible inclure un fichier d’exemple?

Merci et à bientôt


#3

Bonjour DocteurExcel,

Merci pour ton investissent, voir fichier joint pour une meilleur explication de ma demande.

Comparaison Valeur 2 colonnes.xlsx (9,5 Ko)

Cordialement


#4

Je ne vois pas ton code VBA? Ou est ton erreur exactement?


#5

DocteurExcel

Mon premier jet de ma demande mais sur 3 colonnes et non deux avec bcp de bug ( non fonctionnelle)

1Test-validation-sortie non fonctionnelle.xlsm (17,1 Ko)

Cordialement


#6

Bonjour

Est-ce qu’une mise en forme conditionnelle n’est pas suffisante?

Tu pourrais avoir tous les doublons en rouge ce qui te permet de les changer


#7

Bonjour à tous

Un test en VBA avec Msgbox
Comparaison Valeur 2 colonnes.xlsm (20,3 Ko)


#8

Bonjour @scalaze, @DocteurExcel,

J’avais commencé a travailler sur ton fichier d’hier et puis par manque de temps, il m’a fallu abandonner.

Aujourd’hui je te fait une proposition avec le dernier fichier pour les 3 colonnes “B, C, D”.

  1. J’ai supprimé tes macros.

  2. Alors pour les valeurs affichées dans la colonne “D” et qui ne sont pas dans la colonne “B” j’ai utilisé “Validation des données”

Avec cette formule:

Si tu cliques sur “Réessayer”, alors la valeur reste dans la colonne “D” et “VRAI” apparaît dans la colonne “C” une MFC fond rouge et police blanche indique que la valeur choisie n’existe pas en colonne “B”.

MFC rouge formule:

=SI(D4<>"";ESTNA(RECHERCHEV(D4;$B$4:$B$13;1;0));"")=VRAI

Si tu cliques sur “Annuler” alors la valeur mise dans la colonne “D” et qui n’existe pas dans la colonne “B” s’efface.

Si la valeur colonne “D” existe en colonne “B” alors on met “OK” dans la colonne “C” et on met une MFC verte dans les colonnes “B & D”.

Formule colonne “C”:
En “C4”:

=SI(NB.SI($B$4:$B$13;INDEX($B$4:$B$13;EQUIV(D4;$B$4:$B$13;0)))=1;"OK";SI(D4<>"";ESTNA(RECHERCHEV(D4;$B$4:$B$800;1;0));""))

J’ai du mettre 2 formules pour les MFCs vertes car d’après ce que j’'ai compris il peut y avoir des cellules vides dans la colonne “D”.

Formule MFC colonne “B”

=NB.SI($D$4:$D$800;B4)>0

Formule MFC colonne “D”

=SI(ESTNA(INDEX($B$4:$B$800;EQUIV(D4;$B$4:$B$800;0)));0;1)=1

Enfin le traitement des doublons colonne “D”

Une macro dans la “Feuil1” avec un “MsgBox” qui avertira qu’il s’agit d’un doublon et qu’il sera automatiquement supprimé lors de l’appuis sur “OK”.

Code VBA:

 Public DOUBLON As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)

If DOUBLON Then Exit Sub
    If Not Application.Intersect(Target, Columns("D")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Application.CountIf(Range("D:D"), Target) > 1 Then
            DOUBLON = True
                MsgBox ("Attention DOUBLON" & Chr(10) & "Ce code existe déjà !" & Chr(10) & _
                "Il sera auomatiquement supprimé")
                Target.ClearContents
            DOUBLON = False
        End If
    End If
    
End Sub

Ton fichier joint ICI==> Validation-sortie non fonctionnelle V1.xlsm (18,9 Ko)

Cordialement.

Edit: Salut @Mimimathy, mes explications détaillées, font que je viens juste de voir que tu avais répondu, je vais regarder ta proposition.

Cordialement.


#9

Bonjour Mimimathy,

Merci pour ton implication à ma demande,

Par rapport à ta proposition , on renseigne l ensemble des codes puis on fait la recherche.
Or j ai oublié de dire que les données en zone de “contrôle préparation” (colonne C) sont renseignés par un utilisateur qui scanne les codes EAN avec un lecteur douchette code barre et donc après chaque lecture, la macro VBA doit s’activer.

si tu as la possibilité de modifier ta proposition cela serait top.

Cordialement


#10

Bonjour mdo100

Merci également pour ton implication.

J avais aussi réalisé + ou - une proposition similaire à la tienne mais avec le nombre de référence en sortie ,l’ opérateur était constamment obligé de vérifié si le code était OK ou autres sur les 800 lignes.
d’ ou ma demande de code VBA sur 2 colonnes avec message pour une meilleur rapidité de controle et de lecture.

Je garde ta proposition car elle m’a permis de voir “la validation des données” que je ne connaissais pas.

Cordialement


#11

Re @scalaze,

Ok, pas de problème !

Mais pourquoi alors avoir mis un 2ème fichier différent du premier ?

Autre chose, tu dis:

Dans les 2 cas, si il y a un “MsgBox” l’opérateur sera obligé de valider le “MsgBox” si il y a un doublon où si il y a une référence non présente dans la colonne “B”. Car la macro s’arrêtera si on ne valide pas le “MsgBox”, n’es-tu pas d’accord avec cette réflexion ?

Encore autre chose que je n’ais sans doute pas compris, veux-tu garder les doublons dans la colonne “C” et garder aussi “La référence non attendue”, parce-que dans ce cas une macro peut interdire les 2 et dans ce cas les “MsgBox” ne sont pas très utiles, il y a un réel gain de temps de l’opérateur, non !

Cordialement.


#12

Re @scalaze,

Voici une proposition avec le premier fichier, je ne réexplique pas tout.

Mais il n’y a pas de “MsgBox”, la macro supprime les doublons dans la colonne “C” et supprime les références non attendues.

De préférence ne pas laisser des cellules vides dans la colonne "B"
J’ai aussi modifié les plages des MFCs jusqu’à 1500

Regarde si cela te convient :wink:

Ton fichier en retour ICI==> Comparaison Valeur 2 colonnes V1.xlsm (20,0 Ko)

Cordialement.


#13

Re mb100

Alors le 2ème fichier était un premier jet sur 3 colonnes avec bug des l’ouverture de celui . d’ou ma demande pour le premier fichier.

Citation
" Dans les 2 cas, si il y a un “MsgBox” l’opérateur sera obligé de valider le “MsgBox” si il y a un doublon où si il y a une référence non présente dans la colonne “B”. Car la macro s’arrêtera si on ne valide pas le “MsgBox”, n’es-tu pas d’accord avec cette réflexion ? "

je suis d’accord avec toi mais comme l’ ean est unique pour chaque produit ,le risque de doublon est pratiquement Nul, par contre le risque pour “La référence non attendue” est plus grand. (erreur de prélèvement)
Donc l’ opérateur sera oblige de valider le Msgbox et de mettre le produit en zone anomalie si avéré

Citation
"" Encore autre chose que je n’ais sans doute pas compris, veux-tu garder les doublons dans la colonne “C” et garder aussi “La référence non attendue”, parce-que dans ce cas une macro peut interdire les 2 et dans ce cas les “MsgBox” ne sont pas très utiles, il y a un réel gain de temps de l’opérateur, non !""

Pour Msgbox pour le “Doublon”, l opérateur devra contrôler son produit et après avoir confirmer le message. la macro supprime les doublons

Pour “La référence non attendue” , comme pour les Doublons mais si possible avec un double message
1 MsgBox " Attention référence non attendue , veuillez contrôler le produit "
2 MsgBox " Avez vous bien contrôler le produit "

As tu la possibilité de sauvegarder l historique des doublons et référence non attendus soit sur la même feuille en G ou dans sur une autre feuille du classeur

Cordialement


#14

mb100

Je regarde et reviens vers toi . demain il est tard la …:sleeping_bed:

Pour les MsgBox ,voir le message précédent .

Citation
De préférence ne pas laisser des cellules vides dans la colonne "B"
J’ai aussi modifié les plages des MFCs jusqu’à 1500

La colonne B sera renseigné via un autre fichier, il n y a pas de cellule vide normalement sauf après la dernier valeur.

Pour la MFC :+1:

Cordialement


#15

Bonsoir mb100

je reviens vers toi suite à ta proposition.et cela semble convenir
mais as tu la possibilité ,par rapport au produit non attendue de mettre une alerte msgbox.

cordialement


#16

Bonsoir @scalaze,

Je regarderai :eyes: cela plus tard, car mes vieux os sont fatigué :zzz:

@+

Bonne nuit.


#17

Re @scalaze,

Quoi que, avant d’aller me :sleeping_bed:

Regarde si cela te convient.

Ton fichier ICI==> Comparaison Valeur 2 colonnes V2.xlsm (20,5 Ko)

Cordialement.


#18

Re mdo100

J’ ai testé ta proposition et le message “Référence non attendue” apparaît même quand la référence est connu ou cellule vide et si je renseigne une valeur dans une colonne autre que B-C.le message apparaît aussi.
Bien cordialement


#19

Bonjour @scalaze,

Regarde cette proposition:

:warning: Supporte mal les cellules vides dans les 2 colonnes “B & C”.

Ton fichier ICI ==> Comparaison Valeur 2 colonnes V3.xlsm (20,5 Ko)

Cordialement.


#20

Bonsoir mdo100

Pour les cellules vides, j’ai ajouté une petit ligne de code pour palier un des soucis de cellule vide mais pas grand chose. Comparaison Valeur 2 colonnes V3.xlsm (18,5 Ko)

Pour éviter le problème des cellules vides en colonne C, possibilité d’ obliger l’écriture que sur la premier cellule vide en C.
J’ai essayé avec une validation des données mais ??
Peux tu m aiguiller ?

Comme C = B sur le nombre de référence, les vides en B ne devrait pas poser problème normalement.

Cordialement.