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

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
A plus tard
 

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

Salut AHMOST

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 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

Re,

Voici le code que l'on a à présent :
Sub MsgBoxEnergyBill()
Dim EnergyBill As Long

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

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


End Sub

La MsgBox ne s'affiche pas plus, meme en entrant 100 rien ne se passe.
 

VDAVID

XLDnaute Impliqué
Re : MsgBox If Cell<value

AHMOST,

Tu veux que la macro se lance au changement de valeur de la cellule D35?
Sinon essaye de mettre un fichier exemple avec le code, pour que l'on puisse voir où ça coince !
 

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

AHMOST

XLDnaute Junior
Re : MsgBox If Cell<value

Merci VDAVID c'est parfait ! J'ai juste rajouté un End If
Est-ce que tu pourrais m'expliquer le rôle de "ByVal target As Range" stp ? Sur le net je ne parviens pas à comprendre ...

Merci pour ton aide !
 

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.
 

Modeste

XLDnaute Barbatruc
Re : MsgBox If Cell<value

Bonjour AHMOST, VDAVID (rien que des gens qui parlent haut et fort )

Je sais que j'arrive longtemps après la bataille, mais ... on aurait pu faire la même chose avec Données > Validation, non?
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…