VBA - Mettre comme condition deux valeurs numériques avec Select case
Bonjour,
Voila j'en appelle à votre précieuse aide.
J'aimerais faire apparaitre ou disparaitre des images superposée en fonction de plusieurs valeurs.
Par exemple :
Si la valeur de la case BS54 correspondant à (moins de 0,5 fois la valeur de la case BU54) alors il faut faire apparaitre l'image "très bon"
Si la valeur de la case BS54 correspondant à (entre 0,5 fois et 1 fois la valeur de la case BU54) alors il faut faire apparaitre l'image "Bon"
Si la valeur de la case BS54 correspondant à (entre 1 fois et 1,5 fois la valeur de la case BU54) alors il faut faire apparaitre l'image "Mauvais"
Si la valeur de la case BS54 correspondant à (plus d'1,5 fois la valeur de la case BU54) alors il faut faire apparaitre l'image "Très mauvais"
J'ai essayé mais je n'arrive pas trop à savoir si je dois mettre tout en même temps ou si si on doit séparer les conditions à chaque fois.
Mais SURTOUT, je ne sais pas faire de plage conditionnelle. ( que ce soit avec ou sans multiplication => par exemple si je veux avoir comme condition 0,5 fois la valeur d'une case)
C'est toujours assez complexe d'expliquer ce que l'on veut mais j'espère que vous pourrez m'aider.
If Answer_1.Address = "$BS$54" Then
Select Case Answer_1.Value
Case Answer_1.Value = 0 * BU54 And Answer_1.Value < 0, 5 * BU54
ActiveSheet.Shapes("Très bon").Visible = True
ActiveSheet.Shapes("Très mauvais").Visible = False
ActiveSheet.Shapes("Mauvais").Visible = False
ActiveSheet.Shapes("Bon").Visible = False
End Select
Select Case Answer_1.Value
Case Answer_1.Value <= 0, 5 * BU54 And Answer_1.Value < 1 * BU54
ActiveSheet.Shapes("Très bon").Visible = False
ActiveSheet.Shapes("Très mauvais").Visible = False
ActiveSheet.Shapes("Mauvais").Visible = False
ActiveSheet.Shapes("Bon").Visible = True
End Select
End If
Je n'ai pas de fichier excel à disposition désolé.
Je vous remercie.
Hello,
Je ferai un autre IF dans ce cas là à la place des select case :)
@+
Bonjour,
Une interprétation !?
Cdlt.
If Target.Address = "$BS$54" Then
Select Case True
Case Target.Value < 0, 5 * BU54
Me.Shapes("Très bon").Visible = True
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = False
Case Target.Value < 1 * BU54
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = True
Case Else:
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = True
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = False
End Select
End IfBonjour à tous,
petite modif pour raccourcir le code de jean-eric, et ajout d'un test oublié.
Application.ScreenUpdating = False
If Target.Address = "$BS$54" Then
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = False
Select Case True
Case Target.Value < 0, 5 * BU54
Me.Shapes("Très bon").Visible = True
Case Target.Value < 1 * BU54
Me.Shapes("Bon").Visible = True
Case Target.Value < 1.5 * BU54
Me.Shapes("Mauvais").Visible = True
Case Else:
Me.Shapes("Très mauvais").Visible = True
End Select
End Iferic
Rebonjour à vous tous,
Quand j'essaye vos codes cela me met une erreur d'objet. (erreur 424 objet requis)
Je vous met le tableau excel, en espérant que cela éclaircisse le problème :/
Select Case BU54
Case BS54 < 1 * BU54 < 0, 5 * BU54
Me.Shapes("Très bon").Visible = True
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = False
Case BS54 < 1 * BU54
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = True
Case BS54 < 1.5 * BU54
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = False
Me.Shapes("Bon").Visible = False
Me.Shapes("Mauvais").Visible = True
Case BS54 < 2 * BU54
Me.Shapes("Très bon").Visible = False
Me.Shapes("Très mauvais").Visible = True
Me.Shapes("Mauvais").Visible = False
Me.Shapes("Bon").Visible = False
End Select
J'ai essayé avec ca mais ca ne donne rien ( je tâtonne mais je m'y connais pas trop )
Je vous remercie encore !
Soit tu les renommes ainsi, soit tu changes les chaines par leur vrai nom.
eric
Salut le fil,
Ton fichier ne correspond pas du tout à ce que tu veux faire. Donc dans un premier temps fourni un fichier digne de ce nom. (BU54 ne correspond à rien)
Par principe on ne change pas les évènements des objets Private Sub Worksheet_Change(ByVal Target As Range) Target doit rester Target
Si j'ai bien compris ce que tu veux, tu dois faire plusieurs Select Case. Ou bien comme tu as commencé avec des MFC Boigontier traite ce sujet