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
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
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
ç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 ?
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.
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 !
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
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 ...
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.
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