probleme de formulation conditionelle

D

Dee

Guest
Salut a tous,
S ke kelkun pourrait m'aider à formuler sous VBA l'expression ci contre :

Dans une boucle de cellules sous excel, allant des lignes 202 a 220,
je voudrais comparer les cellules H,i et J,i avec plusieurs conditions.
Exemple : Si la cellule H,202 comporte la lettre H, et la cellule I,202 a la valeur 1,2 ou 3 alors la cellule J,202 prend une certaine couleur.
Ca ne marche pas avec la MEFC parce que j'ai 12 conditions.

En détails, les cellules H,202 peuvent avoir la lettre B,H ou N.
Les cellules I,202 peuvent avoir la valeur 0,1,2 ou 3.
Enfin selon qu'il y ait l'une et l'autre condition, la case J,202 devient rouge, orange ou verte.

J'espere que mon explication est assez claire.
Merci pour vos posts
 

Hervé

XLDnaute Barbatruc
Bonjour DEE; le forum

Pourrait-tu joindre une pièce jointe, car la c'est pas très clair.

En effet , tu dis que tu as 12 conditions soit 3 pour la colonne H et 4 pour la colonne J, mais tu ne renvois que 3 couleurs (3 conditions).

Une pièce jointe avec les données (bidon) que tu as et ce que tu voudrais avoir serait le bienvenue.

Au plaisir de te lire.

Salut

Message édité par: Hervé, à: 12/07/2005 12:31
 
D

Dee

Guest
Tout d'abord, merci pour vos réponses rapides.

Voila mes conditions, accrochez vous :

Je pose i dans les cellules pour indiquer une boucle (i varie de 202 à ...)
Si la cellule H,i est B : alors si I,i vaut 0 -> J,i de couleur orange
alors si I,i vaut 1 -> J,i de couleur rouge
alors si I,i vaut 2 -> J,i de couleur orange
alors si I,i vaut 3 -> J,i de couleur vert

Si la cellule H,i est N : alors si I,i vaut 0 -> J,i de couleur rouge
alors si I,i vaut 1 -> J,i de couleur rouge
alors si I,i vaut 2 -> J,i de couleur orange
alors si I,i vaut 3 -> J,i de couleur vert

Si la cellule H,i est N : alors si I,i vaut 0 -> J,i de couleur rouge
alors si I,i vaut 1 -> J,i de couleur rouge
alors si I,i vaut 2 -> J,i de couleur rouge
alors si I,i vaut 3 -> J,i de couleur vert

Voila toute mes conditions.
Et voila ce que G deja fait.


For i = 202 To 211

'Affichage de l'état d'avancement par code couleur

If Cells(i, 8) = 'B' Then
If Cells(i, 9) = '0' Then
Cells(i, 10).Interior.Color = RGB(215, 175, 45)
ElseIf Cells(i, 9).Value = '1' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9).Value = '2' Then
Cells(i, 10).Interior.Color = RGB(215, 175, 45)
ElseIf Cells(i, 9).Value = '3' Then
Cells(i, 10).Interior.Color = RGB(0, 255, 0)
End If

ElseIf Cells(i, 8) = 'N' Then
If Cells(i, 9) = '0' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9) = '1' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9) = '2' Then
Cells(i, 10).Interior.Color = RGB(215, 175, 45)
ElseIf Cells(i, 9) = '3' Then
Cells(i, 10).Interior.Color = RGB(0, 255, 0)
End If

ElseIf Cells(i, 8) = 'H' Then
If Cells(i, 9) = '0' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9) = '1' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9) = '2' Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
ElseIf Cells(i, 9) = '3' Then
Cells(i, 10).Interior.Color = RGB(0, 255, 0)
End If
End If

Next i
 

Hervé

XLDnaute Barbatruc
re, bonjour andré, le forum

une autre synthaxe possible :

Sub Bouton1_QuandClic()
Dim i As Integer
Dim conca As String
Dim cl As Integer

For i = 202 To 220
conca = UCase(Range('h' & i)) & Range('j' & i)
Select Case conca
Case 'B0', 'B1', 'H0', 'H1', 'N0', 'N1'
cl = 3
Case 'B2', 'H2', 'N2'
cl = 46
Case 'B3', 'H3', 'N3'
cl = 4
Case Else
cl = -4142
End Select
Range('j' & i).Interior.ColorIndex = cl
Next i


End Sub

salut

EDITION : problème de mise en page du code ???
reedition : AH, ben là au moins, on voir le code
Message édité par: Hervé, à: 12/07/2005 14:38 :)

Message édité par: Hervé, à: 12/07/2005 14:39
 

Hervé

XLDnaute Barbatruc
re dee, andré, le forum

:)

SI SI ca marche, comme tu dis

Par contre tes explications, elles, laissent à désirer. :)

dans ton premier post tu ecrit :

je voudrais comparer les cellules H,i et J,i avec plusieurs conditions.

Puis dans ton deuxième :

alors si I,i vaut 1 -> J,i de couleur rouge

Ne sachant pas sur quel pied danser, je me suis bêtement arrété sur le premier post.

pas grave, dans le code remplace :

conca = UCase(Range('h' & i)) & Range('j' & i)

par

conca = UCase(Range('h' & i)) & Range('i' & i)

en espérant que là, ca 'marchera'.

salut
 
D

dee

Guest
Oui c vrai, excuse moi de ne pas avoir été très clair dans la premiere question. Bon en fait, j'avais corriger de moi meme pour la petite confusion entre I et J. Mais la aussi ca ne marche pas.

Pourtant le programme que tu propose est clair, je ne vois pas pourquoi il ne marcherait pas. En fait je ne savais pas qu'on pouvait lier 2 condition (condition B et condition 0 , par exemple) en ecrivant 'case B2'. On pourrait pas poser la condition avec :
SI condition1 AND condition2 alors ... , et ça pour tout les cas.

Je me demande si c vraiment réalisable comme truc !! (desespoir)
 

Hervé

XLDnaute Barbatruc
re dee

Ne desespère pas, on va s'en sortir.

ne peux tu pas mettre un fichier en pièce jointe, pour que l'on voit vraiment ou ca cafouille ?

en attendant en pièce jointe tu trouveras mon classeur de test.

Salut
[file name=Classeur3_20050712155703.zip size=8491]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20050712155703.zip[/file]
 

Pièces jointes

  • Classeur3_20050712155703.zip
    8.3 KB · Affichages: 14

andré

XLDnaute Barbatruc
Resalut,

Voilà le fichier joint avec les explications.

J'ai d'abord établi un petit tableau reprenant les conditions.
Uniquement pour avoir une meilleure vision sur les conditions.
Il peut être effacé, car il n'est plus d'aucune utilité.

S'il y a un problème, je reste à l'écoute.

Ândré. [file name=MeFC_Dee_V1.zip size=3369]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MeFC_Dee_V1.zip[/file]
 

Hervé

XLDnaute Barbatruc
re dee, andré

André tu as bien fait de poster ton exemple par mefc, ceci ma permis de déceler une erreur de couleur dans mon code.

Corrigé dans le code ci dessous :

Sub Bouton1_QuandClic()
Dim i As Integer
Dim conca As String
Dim cl As Integer

For i = 202 To 220
conca = UCase(Range('h' & i)) & Range('i' & i)
Select Case conca
Case 'N0', 'H0', 'B1', 'H1', 'N1', 'H2'
cl = 3
Case 'B0', 'B2', 'N2'
cl = 46
Case 'B3', 'H3', 'N3'
cl = 4
Case Else
cl = -4142
End Select
Range('j' & i).Interior.ColorIndex = cl
Next i
End Sub

salut
 
D

Dee

Guest
Merci pour vos differentes propositions. C vrai que ca à l'air de marcher. Du coup je vous joins mon prog, avec des partie effacé. Je vous expliquerai plus tard.
[file name=couleur_condition.zip size=40470]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/couleur_condition.zip[/file]
 

Pièces jointes

  • couleur_condition.zip
    39.5 KB · Affichages: 14

Discussions similaires

J
Réponses
39
Affichages
3 K
J

Statistiques des forums

Discussions
312 836
Messages
2 092 655
Membres
105 479
dernier inscrit
chaussadas.renaud