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.

10 réponses

1 2
Avatar
Pounet95
Bonsoir,
Pour spécifier la plage, je pense (non vérifié ! ) que
Range("C26:C30","E26:E30") doit convenir.

Par contre j'ai un doute :
que se passe-t-i si il y a toto1 en c26 et toto2 en E26 ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/


"Stéphan DuQuébec" a écrit dans le
message de news:
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.


Avatar
Stéphan DuQuébec
C'est justement la condition spécifique que je désire rencontrer........

C'est le Row Color Indez qui se doit d'embarquer.....

Je valide et reviens confirmer.


Bonsoir,
Pour spécifier la plage, je pense (non vérifié ! ) que
Range("C26:C30","E26:E30") doit convenir.

Par contre j'ai un doute :
que se passe-t-i si il y a toto1 en c26 et toto2 en E26 ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/


"Stéphan DuQuébec" a écrit dans le
message de news:
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.






Avatar
Stéphan DuQuébec
La méthode du Range semble être la bonne (sans message d'erreur).

Mais la combinaison des 2 conditions dans la description du Case me fait
encore défaut:

.......
Select Case c
Case "toto1", "toto2"
Rows(c.Row).Interior.ColorIndex = 48
........

Bonsoir,
Pour spécifier la plage, je pense (non vérifié ! ) que
Range("C26:C30","E26:E30") doit convenir.

Par contre j'ai un doute :
que se passe-t-i si il y a toto1 en c26 et toto2 en E26 ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/


"Stéphan DuQuébec" a écrit dans le
message de news:
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.






Avatar
AV
répondent à une combinaison de 2 conditions.


For Each c In Range("C26:C30")
if c="toto1" and c="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
End Sub

AV

Avatar
Pounet95
Bonjour Alain,
Je ne comprends pas : comment peut-on être à la fois 0 et 1 ?
'c' est bien le contenu de la cellule et il ne peut donc pas avoir 2 valeurs
en même temps !!


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"AV" a écrit dans le message de news:

répondent à une combinaison de 2 conditions.


For Each c In Range("C26:C30")
if c="toto1" and c="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
End Sub

AV





Avatar
AV
Je ne comprends pas : comment peut-on être à la fois 0 et 1 ?


Tu as tout a fait raison de t'ébaubir !

Il voulait un "And", j'ai mis un "And" !
M'est avis que se serait plutôt un "Or" mais bon...

AV

Avatar
Stéphan DuQuébec
Bonjour AV, le "Il", c'est moi ça.....

Ma question n'était peut-être pas claire mais ce que je désire faire, et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....


Je ne comprends pas : comment peut-on être à la fois 0 et 1 ?


Tu as tout a fait raison de t'ébaubir !

Il voulait un "And", j'ai mis un "And" !
M'est avis que se serait plutôt un "Or" mais bon...

AV






Avatar
AV
Ok, comme ça (test simultané dans 2 plages différentes), je comprends mieux

If [IsNumber(Match("toto1",C26:C30, 0) + Match("toto2",E26:E30, 0))] Then
MsgBox "toto1 présent en C26:C30 ET toto2 présent en E26:E30"
Else: MsgBox "blabla"
End If

AV
Avatar
Stéphan DuQuébec
Merci !

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.

Bonne journée !


Ok, comme ça (test simultané dans 2 plages différentes), je comprends mieux

If [IsNumber(Match("toto1",C26:C30, 0) + Match("toto2",E26:E30, 0))] Then
MsgBox "toto1 présent en C26:C30 ET toto2 présent en E26:E30"
Else: MsgBox "blabla"
End If

AV





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