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 If

Bonjour à 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 If

eric

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 !

"Très bon" etc est le nom de tes formes.
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

Rechercher des sujets similaires à "vba mettre comme condition deux valeurs numeriques select case"