OVH Cloud OVH Cloud

Select case à 2 conditions

14 réponses
Avatar
Stéphan DuQuébec
Bien le bonjour à toutes & tous,

J'ai une procédure existante qui utilise un Select Case, et qui est
déclenchée par un évènement Worksheet Change. Elle fonctionne très bien.
Cependant, je voudrais maintenant que les cas possibles répondent à une
combinaison de 2 conditions. J'ai de la difficulté avec le script de la
procédure à adopter.

Exemple de ma procédure actuelle:

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Comment faire pour y coupler une seconde condition, disons pour la même
plage de la colonne E (26 à 30) ? Admettons que la condition doit être que la
valeur de la cellule de la colonne E doit être = à "toto2".

Où spécifier mon Range E26 à E30 ?

Comment y inscrire ma seconde condition (j'ai tenté avec un AND mais sans
succès).

Merci pour votre aide éventuelle.

4 réponses

1 2
Avatar
AV
J'avais cru cette ficelle trop ancienne pour que vous y reveniez....j'avais
pris la liberté de réaborder le tout dans une nouvelle aujourd'hui.


Ben non...on essaye d'assurer le SAV mais on a aussi droit à des pauses ;-)

Bonne journée !


Ben ici, c'est presque bonne nuit ;-)

AV

Avatar
Stéphan DuQuébec
Bonsoir AV,

Votre procédure fonctionne très bien.

Mais les termes toto1 & toto2 peuvent ainsi se trouver sur n'importe quelle
ligne de leur colonne respective (pas nécessairement sur la même ligne) pour
que se déclenche le Msgbox. Manque de précision dans ma demande.....

Mais j'ai eu aussi d'autres pistes intéressantes dans ma ficelle suivante.
Je ne veux pas abuser de votre support. Je conserve précieusement votre
procédure qui était une possibilité qui m'était encore inconnue.

Merci.


De façon plus conventionnelle :

If IsNumeric(Application.Match("toto1", Range("C26:C30"), 0)) _
And IsNumeric(Application.Match("toto2", Range("E26:E30"), 0)) Then MsgBox "ok"

AV





Avatar
michdenis
Bonjour Stéphan,

Une variante de la procédure d'Alain,

'------------------------------
Sub Trouver()

Dim A As Variant, B As Variant

A = Application.Match("toto1", Range("C26:C30"), 0)
B = Application.Match("toto2", Range("E26:E30"), 0)
If IsNumeric(A) And IsNumeric(B) Then
If A = B Then
MsgBox "Toto1 est sur la même ligne que Toto2"
MsgBox "La ligne est : " & Range("C26:C30")(A).Address
Else
MsgBox "Les 2 sont présents mais sur des lignes séparées"
End If
End If

End Sub
'------------------------------


Salutations!


"Stéphan DuQuébec" a écrit dans le message de news:


Bonsoir AV,

Votre procédure fonctionne très bien.

Mais les termes toto1 & toto2 peuvent ainsi se trouver sur n'importe quelle
ligne de leur colonne respective (pas nécessairement sur la même ligne) pour
que se déclenche le Msgbox. Manque de précision dans ma demande.....

Mais j'ai eu aussi d'autres pistes intéressantes dans ma ficelle suivante.
Je ne veux pas abuser de votre support. Je conserve précieusement votre
procédure qui était une possibilité qui m'était encore inconnue.

Merci.


De façon plus conventionnelle :

If IsNumeric(Application.Match("toto1", Range("C26:C30"), 0)) _
And IsNumeric(Application.Match("toto2", Range("E26:E30"), 0)) Then MsgBox "ok"

AV





Avatar
Stéphan DuQuébec
Michdenis, merci !

C'est effectivement une variante qui m'intéresse !


Bonjour Stéphan,

Une variante de la procédure d'Alain,

'------------------------------
Sub Trouver()

Dim A As Variant, B As Variant

A = Application.Match("toto1", Range("C26:C30"), 0)
B = Application.Match("toto2", Range("E26:E30"), 0)
If IsNumeric(A) And IsNumeric(B) Then
If A = B Then
MsgBox "Toto1 est sur la même ligne que Toto2"
MsgBox "La ligne est : " & Range("C26:C30")(A).Address
Else
MsgBox "Les 2 sont présents mais sur des lignes séparées"
End If
End If

End Sub
'------------------------------


Salutations!


"Stéphan DuQuébec" a écrit dans le message de news:


Bonsoir AV,

Votre procédure fonctionne très bien.

Mais les termes toto1 & toto2 peuvent ainsi se trouver sur n'importe quelle
ligne de leur colonne respective (pas nécessairement sur la même ligne) pour
que se déclenche le Msgbox. Manque de précision dans ma demande.....

Mais j'ai eu aussi d'autres pistes intéressantes dans ma ficelle suivante.
Je ne veux pas abuser de votre support. Je conserve précieusement votre
procédure qui était une possibilité qui m'était encore inconnue.

Merci.


De façon plus conventionnelle :

If IsNumeric(Application.Match("toto1", Range("C26:C30"), 0)) _
And IsNumeric(Application.Match("toto2", Range("E26:E30"), 0)) Then MsgBox "ok"

AV










1 2