MsgBox If Cell<value

AHMOST

XLDnaute Junior
Bonjour !

Je suis en train d'écrire un simple code pour faire apparaitre une MsgBox si la valeur entrée dans la cellule D35 est inférieure à 300 000€.
Voici mon code :
Sub MsgBoxEnergyBill()
Dim EnergyBill As Integer
EnergyBill = D35

If EnergyBill < 300000 Then
MsgBox "Consumption is too low"
End If

End Sub

Je ne comprends pas pourquoi rien ne se passe ?
Si vous pouviez m'expliquer rapidement pourquoi ça ne marche pas, j'aimerais apprendre de mes erreurs :D
A plus tard
 

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

Salut AHMOST :D

Essaye comme ceci:

Code:
Sub MsgBoxEnergyBill()
Dim EnergyBill As Integer
EnergyBill = Sheets("Feuil1").Range("D35").Value

If EnergyBill < 300000 Then
MsgBox "Consumption is too low"
End If

End Sub
 

AHMOST

XLDnaute Junior
Re : MsgBox If Cell<value

Salut VDAVID !

Deja merci pour ton aide !
Voici le code suite à ton commentaire :
Sub MsgBoxEnergyBill()
Dim EnergyBill As Integer

EnergyBill = Sheets("2-Quotation").Range("D35").Value

If EnergyBill < 300000 Then
MsgBox "Consumption is too low"
End If


End Sub

ça ne fonctionne pas :D Ma feuille est vérouillée sur certaines cellules mais pas sur la D35 qui contient la valeur "Energy Bill".
As tu une idée de ce qui pourrait clocher ?
 

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

Re AHMOST,

Effectivement je ne suis pas réveillé ce matin ! ^^

Tu as déclarer la valeur EnergyBill As Integer.
Une variable Integer est un entier compris entre - 32 768 et 32 767.
Or apparemment la valeur de la cellule D35 peut façilement prendre une valeur supérieure à 32 767 puisque ta condition porte sur 300 000 :)

Essaye de déclarer en tant que Long si c'est un entier, ou Double si EnergyBill est susceptible d'avoir des virgules.

Comme ceci:

Dim EnergyBill As Long

OU

Dim EnergyBill As Double
 

AHMOST

XLDnaute Junior
Re : MsgBox If Cell<value

En fait je veux tout simplement que SI la valeur en D35 est inférieure à 300 000, ALORS MsgBox "consommation énergétique trop basse".

Voici le fichier joint pour un test de la macro, merci ! :)
 

Pièces jointes

  • AHMOST-MsgBox.xlsm
    11.8 KB · Affichages: 26

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

Re,

Comme ceci plutôt, il faut que tu intègres le code dans l'évènement Change de ta feuille:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = Range("D3").Address Then
    
        If Target.Value < 300000 Then MsgBox "Consumption is too low", vbExclamation, "Caution"
    
    End If
    
    
End Sub

Un code sub doit être activé manuellement et ne se déclenchera pas à la modification d'une cellule !
Regarde la P.J autrement :)
 

Pièces jointes

  • AHMOST-MsgBox(1).xlsm
    14.6 KB · Affichages: 28

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

AHMOST,
Content que ça colle à ce que tu souhaitais :)

En ce qui concerne le rôle de ByVal et Target As Range, je t'invite à consulter l'aide (en appuyant sur F1, lorsque tu es sur un mot clé) qui est très complète !

Pour résumer, il s'agit de passer des arguments pour cette procédure. Comme tu déclares des variables lorsque tu initialises ton code. Ici, on passe Target en tant que Range, qui représente une ou plusieurs cellules. ByVal veut dire en fonction de la valeur en opposition à ByRef, s'appuyant sur les références des cellules.
 

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

Salut Modeste,

Effectivement je parle haut et fort (Attention aux oreilles !) mais j'espère que je ne dis pas trop de conneries (Ce qui est souvent le cas pour les gens qui parle comme ça =D ).
En l'occurrence c'est vrai qu'en passant par données validations c'est bien plus simple !

Pourquoi faire simple quand on peut faire compliqué dira t-on :)