Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Comparaison de 2 valeurs entre 2 feuilles avec MsgBox et MEF

ExcLnoob

XLDnaute Occasionnel
Bonjour à tous,

J'aurai besoin d'un coup de main svp..

Dans un fichier, j'ai dans la colonne A de la feuil1 des numéros de commande. Il y a des doublons mais c'est normal.
Ces numéros de commande sont également présents sans doublon dans la feuil2 colonne B.
En col D de cette feuil2, il y a aussi les montants restants sur ces commandes. Ces montants peuvent être positifs ou négatifs.

Je souhaiterai, lorsque je remplis la prochaine cellule vide de la col A feuil1, chercher si cette valeur existe dans la colonne B de la feuil2 et selon la valeur de la col D de la ligne de la commande concernée ouvre une MsgBox normale si le résultat est positif et une MsgBox avec un gros warning si le montant est négatif.
En option 3, si le numéro de commande renseigné en col A de la feuil2 n'existe pas une autre MsgBox et une mise en rouge de la cellule.

Je sais faire des parties de code mais pas le principal du test entre les 2 feuilles.
J'ai bien trouvé des pistes mais principalement sur la recherches de doublons et j'ai peur qu'en adaptant trop je complexifie plus qu'autre chose.

J'espère avoir été clair et que mon sujet va trouver sauveur...
Merci d'avance pour votre aide en tout cas.
 
Solution
Bonsoir @job75

Merci pour ce retour.
Sans doute, oui. Mais il le faut bien malheureusement.
Après les MsgBox ne vont pas se succéder puisque assujetties à conditions.
Bref, j'ai trouvé.
Peut-être existe-t-il une solutions plus optimale mais en tout cas ça fonctionne.

Je pose ça là pour qui veut :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cel As Range
    If Not Intersect(Target, Columns(22)) Is Nothing Then
    Set Cel = Feuil4.UsedRange.Find(Target.Value, , xlValues, xlWhole)

            If Cel Is Nothing Then
                MsgBox "La commande n'existe pas", vbCritical, "ATTENTION !!!"
                    ActiveCell.Value = ""
                    ActiveCell.Interior.Color = RGB(255, 0, 0)
    Else...

ExcLnoob

XLDnaute Occasionnel
Bonsoir @job75

Merci pour ce retour.
Sans doute, oui. Mais il le faut bien malheureusement.
Après les MsgBox ne vont pas se succéder puisque assujetties à conditions.
Bref, j'ai trouvé.
Peut-être existe-t-il une solutions plus optimale mais en tout cas ça fonctionne.

Je pose ça là pour qui veut :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cel As Range
    If Not Intersect(Target, Columns(22)) Is Nothing Then
    Set Cel = Feuil4.UsedRange.Find(Target.Value, , xlValues, xlWhole)

            If Cel Is Nothing Then
                MsgBox "La commande n'existe pas", vbCritical, "ATTENTION !!!"
                    ActiveCell.Value = ""
                    ActiveCell.Interior.Color = RGB(255, 0, 0)
    Else

            If Not Cel Is Nothing And Cel.Offset(0, 10) > 0 Then
                MsgBox "Provisions restante sur Commande :" & Chr(10) & Format(Cel.Offset(0, 10), "#,##0.00 €"), vbInformation, "NOTE"
        
    Else

            If Not Cel Is Nothing And Cel.Offset(0, 10) < 0 Then
                MsgBox "Plus assez de provisions sur la commande :" & Chr(10) & Format(Cel.Offset(0, 10), "#,##0.00 €"), vbCritical, "ATTENTION !!!"
    
            End If
            End If
            End If
            End If

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…