Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 27/08/2008, 14h13   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut mise en forme a plus de 3 condi

Salut,

je sollicite votre aide aux (oooooohhh) grands maitres VBAsiens
je voudrais appliquer une mise en forme avec plus de 3 conditions.
par exemple dans le fichier joint http://www.cijoint.fr/cjlink.php?fil...cijwvYW1nI.xls
lorsque j'ai dans la 1ère colonne "+pts" et en face une valeur différente de 0 alors je met un fond rose sur la valeur
lorsque j'ai "+rem" et une valeur différente de 0 je met un fond bleu sur la valeur
etc ... avec autant de conditions que j'ai de libellé

je suis rouillé en VBA, j'ai déjà essayé des choses mais sans succès, help svp ?
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 14h24   #2 (permalink)
Nouveau membre du Club
 
Date d'inscription: août 2007
Localisation: Lyon
Âge: 27
Messages: 74
Par défaut

bonjour,
essayes avec ce genre de code :
Code :
 
for each cell in range(ta plage)
select case cell.value
case >1 'exemple
cell.interior.colorindex=3  'rouge
 
'
'
' et ainsi de suite
end select
next
 
 
youn1096 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 15h28   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut

je l'ai adapté pour mon fichier,
ca ne marche pas il ne se passe rien
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 15h48   #4 (permalink)
Membre éclairé
 
Avatar de casavba
 
Date d'inscription: juillet 2007
Localisation: Quelque part en Hexagone
Messages: 346
Par défaut

Bonjour,

les valeurs de la colonnes A sont connues par avance ou pas ?

("+pts", "+rem",...etc)
casavba est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 11h32   #5 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut

en fait cela serait a appliquer à un TCD les emplacements de libellé peuvent changer

casavba à quoi pensais tu ?
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 15h28   #6 (permalink)
Modératrice
 
Avatar de zazaraignée
 
Date d'inscription: février 2004
Localisation: Rimouski
Messages: 3 067
Par défaut

Personnellement, je n'ouvrirai pas un fichier joint... et je pense ne pas être la seule à user de cette précaution.

Mets nous le bout de code et les détails importants permettant de mieux comprendre la situation comme, par exemple, le fait que ton code s'applique à un tableau croisé dynamique (ce qu'on n'aurait pu deviner sans ouvrir le fichier).
__________________
  • Pour les nouveaux : Mode d'emploi et aide aux nouveaux
  • et impérativement les règles du forum. Histoire de garder une ambiance amicale.
  • Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
  • Je ne réponds pas aux questions posées par MP.
zazaraignée est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 16h11   #7 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut

je n'ai pas de bout de code car je ne sais pas par quel bout le prendre (ce code)

peu importe le TCD ou pas si ca marche sur simple feuille déjà ça m'aiderai beaucoup

ceci dit beaucoup de monde réclame un fichier joint pour etre mieux compris !


je souhaiterais en fait une mise en forme condi avec plus de 3 conditions et sur plus d'une cellule (impossible dans les menus standars d'excel)

si mon libellé et A et en face j'ai une valeur différente de 0 alors je met un fond coloré sur cette valeur et j'applique au reste du tableau
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 17h14   #8 (permalink)
Membre éprouvé
 
Date d'inscription: juillet 2004
Messages: 436
Envoyer un message via MSN à helios77
Par défaut

et bien tu fais un truc dans le genre

Code :
 
'Balayage de toutes tes lignes (suppose que toutes tes colonnes 1 soient 'remplies)
i=1
while Trim(cells(i,1).value) <>""
  if cells(i,1).value = "+pt" and cells(i,2)="rmq" and cells (i,3).value= "toto" and cells (i,4).value="titi" then 
         Cells(i,5).select
         Selection.interiorColor=3
end if
'Tu répètse ce if avec toute les combinaisons qui t'arrangent... c'est un peu 'lourd comme colution mais je ne vois pas tellement d'autres solutions
   i=i+1
wend
 
Voici eventuellement une solution plus souple car paramétrable mais sans doute plus longue en temps de traitement

Voici l'algo...
Sur une feuille "Paramétrage", tu devrais créer 4 colonnes avec les différentes valeurs dans chacune des colonnes
Au final, tu auras chacune des tes combinaisons sur une ligne avec le code couleur correspondant à chacune des combinaison

Pour tafeuille principale, tu recherches à chaque fois dans la feuille parametrage, la ligne correspondant à tse critères afin de récupérer le code couleur pour pouvoir l'affecter
helios77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 17h24   #9 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Citation:
'Tu répètse ce if avec toute les combinaisons qui t'arrangent... c'est un peu 'lourd comme colution mais je ne vois pas tellement d'autres solutions
Peut-être un Select case pour alléger le code et réduire les tests, dans la mesure ou une seule condition est rencontrable.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 21h03   #10 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Localisation: Québec, Canada
Messages: 24
Par défaut mise en forme plus de trois conditions

Ce code dans la page de code de ton onglet fonctionne. Tes clés dans la colonne A et leur valeur dans la colonne B.

Code :
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column <> 2 Then Exit Sub
 
If IsNumeric(ActiveCell.Value) = False Then Exit Sub
 
If ActiveCell.Value > 0 Then
    If ActiveCell.Offset(0, -1).Value = "+Pts" Then Selection.Interior.ColorIndex = 5
    If ActiveCell.Offset(0, -1).Value = "+Rem" Then Selection.Interior.ColorIndex = 6
    ...
    ...
    ...
    
End If
 
End Sub

Dernière modification par fring ; 02/09/2008 à 21h37 Motif: Veuillez utiliser les balises [code] (sélection du code + clic sur #)
frolland46 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 10h45   #11 (permalink)
Membre éprouvé
 
Date d'inscription: juillet 2004
Messages: 436
Envoyer un message via MSN à helios77
Par défaut

Sauf que la demande initiale semble dire par exemple:
si la cellule A1 = "+pt" et que la cellule "B2"="+rmq" alors je colorie en rouge la cellul C5

Ton cas ne prend en compte qu'une seule possibilité....
Ton cas est surtout faisable avec la mise en forme conditionnelle proposée par Excel

Le souci du poste est de faire une mise en forme conditionnelle sur plus de 3 critères (maximum autorisé par Execel)
helios77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 14h09   #12 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut

no c po ça

si sur la ligne débute par "+PTS" alors sur le reste de la ligne lorsque j'ai une valeur je colori sinon je fais rien
si sur la éème ligne j'ai un autre libellé "+REM" par exemple alors je fais pareil avec une autre couleur.

bon j'arrive à colorier tous mes libellé avec ça
Code :
For Each i In Range("A1:S22")
    If i <> "" Then
        Select Case i.Value
        Case "+PTS"
        i.Interior.ColorIndex = 3
        Case Else
        i.Interior.ColorIndex = 0
        End Select
    End If
Next
mais seulement mes libellé, il ne touche pas aux chiffres,
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 14h14   #13 (permalink)
Membre éprouvé
 
Date d'inscription: juillet 2004
Messages: 436
Envoyer un message via MSN à helios77
Par défaut

si je comprends bien, ta ligne débute sur la colonne A
Donc ton code parait pas mal mais tu devrais le modifier un peu comme ceci

Code :
 
For Each i In Range("A1:S22")
    If i <> "" Then
        Select Case Range("A" & i.Row)
        Case "toto": i.Interior.ColorIndex = 3
        Case "titi": i.Interior.ColorIndex = 5
        Case "tata": i.Interior.ColorIndex = 8
        End Select
    End If
Next
 
helios77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 14h48   #14 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2007
Messages: 20
Par défaut

okay, merci m'sieur ca marche

Dernière modification par fring ; 09/09/2008 à 16h15
nicovbs est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide