Casse tete MFC sur VBA

Résolu/Fermé
Signaler
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

Ok merci beaucoup je test et je te tient au courant
0
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

Est ce que je peut faire:


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

pour pouvoir appliquer a toute cette plage?
0
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
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
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
non ce n'est pas un problème de version excel.
Tiens regarde la MFC de ce fichier
0
Messages postés
54
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
9 février 2011

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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 677
Tant mieux.
A +
0