Casse tete MFC sur VBA

Résolu/Fermé
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011 - 16 mars 2010 à 13:27
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 16 mars 2010 à 18:02
Salut a tous,

j'ai un petit casse tete a vous proposer (en tout cas c'est en train de casser la mienne...)

Je cherche donc a faire une mise en forme conditionnel sur des cellules comprenant du text en passant par une macro.
Voila mon code pour mieux comprendre:

Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="=""Bipack"""
With Selection.FormatConditions(1).Font
.Bold = False
.Italic = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions(1).Interior.ColorIndex = 45
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="=""On"""
Selection.FormatConditions(2).Interior.ColorIndex = 33

Donc, en gros, je souhaite colorier les cases qui ont le texte "bipack" dedans et d'autres ayant le texte "On".
Mais je n'ai pas tout dis, car dans ces cellules se trouve d'autre caracters (du texte et des chiffres).
De plus, il y a plusieurs cases a colorier car plusieurs possede le texte "bipack"... d'ou mon xlGreaterEqual.

Remarque: le texte se trouvera toujour au debut de la cellule, j'avais donc pense a une fonction Left, mais je c pas si c'est judicieux et oú il faudrait la mettre.

Je pense que c'est au niveau de la Formula qu'il faut dire a la macro comment chercher les cases ayant le mot en question, mais je suis incapable de l'exprimer.

Je me demande d'ailleurs si ce que je demande est possible...

Une autre petite question, peut mettre plus de trois mise en forme en passant par VBA?

Merci a tous pour votre temps

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 13:46
Salut,
Supposons que tu veuilles appliquer cette MFC en A1. La formule à appliquer est:
Formula1:="=CHERCHE(""bipack"";A1)"

en fait, ta formule =bipack ne s'applique que si la cellule ne contient que ce mot. La fonction "cherche" cherche si dans la cellule le mot "bipack" est présent...
0
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 14:58
Ok merci beaucoup je test et je te tient au courant
0
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 15:48
Ca a l'air proche mais alors la tu va rire, lorsque je fait la fonction:


Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual _
, Formula1:="=buscar(""promocaja"";B2)"
Selection.FormatConditions(1).Interior.ColorIndex = 45

il me colorie tout sauf les cases ou il y a promocaja ;)

je bug total
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 15:51
L'enregistreur de macro me donne ce code :
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=CHERCHE(""bipack"";A1)"

En effet, j'utilise la MFC en sélectionnant : "la formule est" et non "la valeur de la cellule est"...
0
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 15:59
Est ce que je peut faire:


Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=CHERCHE(""bipack"";A1:H100)"

pour pouvoir appliquer a toute cette plage?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 16:12
Non. La il va chercher bipack dans la plage A1:H100 (ce qui ne fonctionnera pas bien d'ailleurs) mais la MFC ne s'applique qu'à la selection c'est à dire la cellule active...
Pour faire ce que tu désires :
Range("A1").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=CHERCHE(""bipack"";A1)"
    Selection.FormatConditions(1).Interior.ColorIndex = 45
Selection.Copy
    Range("A1:H100").Select
    Selection.PasteSpecial Paste:=xlPasteFormats
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 16:24
Je t'avoue que ca ne fonctionne pas chez moi...
J'ai essayer plusieurs truc a partir de ton code mais rien n'y fait...

Un truc que je ne comprend pas, c'est le role de la cellule A1 dans la formule cherche...
- est ce une cellule de reference ou la cellule dans laquelle la macro va chercher l'expression.
selon moi ce serait la seconde option, mais j'ai beau ecrire "bipack" dans la cellule A1, seul ou avec d'autre caractere, la macro ne me colorie pas la case

a tu une idee de ce qui peut se passer?

Merci encore pour ton temps.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 17:34
La cellule A1 est : la cellule dans laquelle la macro va chercher l'expression...
Essaye de faire "manuellement" la MFC. Si tu y arrives refais le en enregistrant la macro.
Pour la MFC, clique sur A1, Format/MFC; choisit "la formule est" et inscrit : =CHERCHE("bypas";A1)
0
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 17:47
Lorsque j'essaye a la main ca ne marche pas.

Je me dis que c'est ma version d'excel qui doit etre trop vieille et ne doit pas pouvoir gerer ceci (version 2002 je sais je suis a la bourre...)

sinon dans ta case A1 tu rentre quoi?
- bipack ??
- bipack + du texte au hazard
- ou rien.


Merci encore pour ton aide precieuse mais apres ta prochaine reponse je m'arreterai pour aujourd'hui et m'y remetterai demain ;)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 17:56
non ce n'est pas un problème de version excel.
Tiens regarde la MFC de ce fichier
0
Nicoroth Messages postés 54 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 9 février 2011
16 mars 2010 à 18:00
MERCI CA MARCHE

en fait j'utilisais la mauvaise fonction; probleme de traductio du francais a l'anglais a l'espagnol.

je ne sais comment te remercier si ce n'est cochant resolu :)

merci encore pour ta patience et ton aide

a bientot j'espere
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2010 à 18:02
Tant mieux.
A +
0