VBA selon égalité de cellule

Bonjour,

Je débute sur VBA, et je viens solliciter votre aide.

Dans ma cellule G6, j'ai un résultat qui est donné par la formule =SOMME(

Dans ma cellule H6 j'ai également un résultat qui est obtenu par la formule =SOMME(

Dans ma cellule I6 se trouve le résultat de la somme de G6+H6

J'aimerais créer un code vba qui me donnerait un message box avec un avertissement lorsque les cellules G6 et H6 deviennent égales.

J'ai commencé à glané un peu ceci mais j'ai des erreurs du type Sub, fonction non définie...

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$H$6" Then

'Si la valeur de target (H6) = que la valeur contenu dans G6

If Target.Value = Range("G6").value Then

'Le message s'affiche

MsgBox "Trend"

End If

End Sub

'--------------------------

Salut,

je mettrais simplement un truc du style

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("G6").Value = Range("H6").Value Then MsgBox "Les 2 valeurs sont identiques !"

End Sub

Salut,

Je viens de coller le code dans ma feuille, c'est parfait comme solution.

Reste plus qu'à le coller dans mes autres feuilles.

Merci pour ton retour.

Bonjour,

Concernant la dernière macro proposée, serait-il possible de différencier lorsque l'égalité des deux cellules est positive et négative.

Autrement dit, lorsque G6 et H6 sont toutes deux positives et de valeur égales : "MsgBox" HIGH

Et lorsque G6 et H6 sont toutes deux négatives et de valeur égales "MsgBox" LOW

Vous remerciant de votre retour

bonjour,

essaie ceci, note que cette macro va se déclencher dès qu'il y aura une modification dans ta feuille. (ce n'est peut-être pas l'effet voulu).

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("H6").Value = Range("G6").Value Then
        If Range("H6").Value < 0 Then
            MsgBox "low"
        Else
            MsgBox "high"
        End If
    End If
End Sub

Bonjour h2so4,

En fait l'idéal serait que cette macro se déclenche lorsque je saisi ma colonne AB.

Parce que j'ai plusieurs colonnes, lignes à saisir, ceci étant la macro reste quasi identique à part une modification de Range et symbole de comparaison en collant les lignes.

Et arrivé à la saisi de la colonne AB et après validation de la cellule, l'idéal serait que la macro se déclenche.

J'en demande peut-être un peu beaucoup^^

Je test de suite ton code de suite

Merci

En fait l'idéal serait que cette macro se déclenche lorsque je saisi ma colonne AB.

tu trouveras ton bonheur sur cette page

https://forum.excel-pratique.com/cours-astuces/utilisation-de-la-methode-intersect-t1314.html

Après avoir collé le code dans ma feuille et testé, j'ai un message erreur de compilation erreur de syntaxe

h2so4 a écrit :

bonjour,

essaie ceci, note que cette macro va se déclencher dès qu'il y aura une modification dans ta feuille. (ce n'est peut-être pas l'effet voulu).

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("H6").Value = Range("G6").Value Then
        If Range("H6").Value < 0 Then
            MsgBox "low"
        Else
            MsgBox "high"
        End If
    End If
End Sub


alive a écrit :

En fait l'idéal serait que cette macro se déclenche lorsque je saisi ma colonne AB.

tu trouveras ton bonheur sur cette page

https://forum.excel-pratique.com/cours-astuces/utilisation-de-la-methode-intersect-t1314.html

Merci,

Je suis débutant en VBA.

un des ces codes, doit être collé devant ma macro en modifiant le range?

Un indice : regarde le fonctionnement de l'exemple N°3 sur le lien que je t'ai mis

re-bonjour,

par exemple

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("AB:AB")) Is Nothing Then
        If Range("H6").Value = Range("G6").Value Then
            If Range("H6").Value < 0 Then
                MsgBox "low"
            Else
                MsgBox "high"
            End If
        End If
    End If
End Sub
h2so4 a écrit :

re-bonjour,

par exemple

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("AB:AB")) Is Nothing Then
        If Range("H6").Value = Range("G6").Value Then
            If Range("H6").Value < 0 Then
                MsgBox "low"
            Else
                MsgBox "high"
            End If
        End If
    End If
End Sub

J'ai collé tel quel le code, mais j'ai un message erreur de compilation, syntaxe

Joins-nous ton fichier

J'ai fais ce code qui fonctionne mais sans les condition positif - négatif

J'ai mis les apostrophes pour ignorer cette condition et là ça fonctionne!

En fait j'aimerais que le code fasse la différence entre une égalité des 2 cellules mais positive = HIGH et dans le cas d'une égalité mais cette fois négative = LOW

Merci à vous tous

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Columns("AC:AC")) Is Nothing Then

If Range("G6").Value = Range("H6").Value Then

'If Range("H6").Value < 0 Then

'MsgBox "LOW !"

'Else

MsgBox "HIGH !"

'End If

End If

End If

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("G:H")) Is Nothing Then
        If Range("H6").Value = Range("G6").Value Then
            If Range("H6").Value < 0 Then
                MsgBox "low"
            Else
                MsgBox "high"
            End If
        End If
    End If
End Sub

essaie ça

bonjour,

le code fourni fonctionne. il doit y avoir un problème avec ton fichier. d'où la demande de nous mettre ton fichier.

Le code fonctionne!

Reste plus qu'à ajouter d'autres conditions et lignes sous le même principe.

Je fermerais ce sujet dés que j'aurais finis.

Encore merci de votre aide

Je pense qu'il y avait un soucis dans la première version de ton code h2so4, car tu testais la colonne AC

If Not Intersect(Target, Columns(""AC:AC"")) Is Nothing Then

J'ai modifié pour tester les colonnes G à H :

If Not Intersect(Target, Columns("G:H")) Is Nothing Then

donc quand on change la valeur de G6 ou de H6 ça fonctionne...

domy, tu peux aller encore plus loin en ne testant que les cellules G6 et H6, et non toute les colonnes G et H...

alive a écrit :

Je pense qu'il y avait un soucis dans la première version de ton code h2so4, car tu testais la colonne AC

If Not Intersect(Target, Columns(""AC:AC"")) Is Nothing Then

J'ai modifié pour tester les colonnes G à H :

If Not Intersect(Target, Columns("G:H")) Is Nothing Then

donc quand on change la valeur de G6 ou de H6 ça fonctionne...

domy, tu peux aller encore plus loin en ne testant que les cellules G6 et H6, et non toute les colonnes G et H...

ma première version teste un changement dans la colonne AB comme demandé ;o)

Et arrivé à la saisi de la colonne AB et après validation de la cellule, l'idéal serait que la macro se déclenche.

Ah oui pardon je n'avais pas fait attention à ça !

mais c'est vrai que si tu avais joint ton fichier, on aurait pu t'aiguiller plus rapidement...

Pour la colonne AB, "h2so4" n'a pas fais d'erreur, c'est moi qui par la suite ai fait le changement par la colonne AC.

Voici le code que j'ai fais, complétant le premier code, mais apparemment la suite de mon code ne semble pas être pris en compte.

Pour le fichier, il s'agit d'un fichier entreprise

Voici mon code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Columns("AC:AC")) Is Nothing Then

If Range("G6").Value = Range("H6").Value Then

If Range("H6").Value < 0 Then

MsgBox "DAYS ROTATIONS FACTOR IS LOW !"

Else

MsgBox "DAYS ROTATIONS FACTOR IS HIGH !"

If Range("O6").Value = Range("P6").Value Then

MsgBox "EXTENSION FLAT !"

If Range("O6").Value > Range("P6").Value Then

MsgBox "EXTENSION HIGH !"

Else

MsgBox "EXTENSION LOW !"

End If

End If

End If

End If

End If

End Sub

Rechercher des sujets similaires à "vba egalite"