Excel macro mise en forme conditionnelle [Résolu/Fermé]

Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
- - Dernière réponse : Raymond PENTIER
Messages postés
50048
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 octobre 2019
- 21 juil. 2008 à 15:10
Bonjour,
Toujours débutante en programmation (j'avance à taton mais j'avance quand même), j'aimerai pouvoir appliquer une mise en forme conditionnelle à l'aide d'une macro.
Les mises en formes conditionnelles n'en propose que 3 jusqu'à la version 2003 et c'est bien mieux depuis la version 2007 mais je dois travailler dans les deux versions et j'ai déjà des mises en formes créées dans mon classeur.

Donc, j'aimerai pouvoir appliquer un format police (une couleur) dès que :
si colonne F = "Vente" et colonne O = "" (vide) ==> je veux couleur bleue pour la ligne entière (ou les données de la ligne)
si colonne F = "Vente" et colonne O = variable (un numéro de facture : V071011) ==> je veux couleur orange pour la ligne entière (ou les données de la ligne)
sinon couleur automatique donc pas de changement.

Je pense que je peux appliquer le même type de condition pour 3 cellules différentes à comparer.

Je remercie tous ceux et celles qui pourront m'aider.
a+
Eve
Afficher la suite 

6 réponses

Meilleure réponse
3
Merci
Bonjour,

Voici une macro

Sub formatConditionnelle()
Application.ScreenUpdating = False

For Each c In [f1:f25] 'plage a testée
c.Select
Dim l As Long
l = ActiveCell.[Row]
If ActiveCell.Value = "Vente" And ActiveCell.Offset(0, 9) <> "" Then

Rows("" & l & ":" & l & "").Select
Selection.Font.ColorIndex = 45
Else
If ActiveCell.Value = "Vente" And ActiveCell.Offset(0, 9) = "" Then
Rows("" & l & ":" & l & "").Select
Selection.Font.ColorIndex = 5
Else
Rows("" & l & ":" & l & "").Select
Selection.Font.ColorIndex = 1
End If
End If

Next

Application.ScreenUpdating = True
Range("f1").Select
End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62597 internautes nous ont dit merci ce mois-ci

evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
49 -
Bonjour Néné,
Merci de ta réponser c'est impec. Par contre j'essaie de comprendre à chaque fois pour mieux réutiliser par la suite et je constate que j'ai un peu de mal à saisir les phrases :
Application.ScreenUpdating = False
et
Application.ScreenUpdating = True

ça veut dire mise à jour de l'écran ? Pour moi ça voudrait dire que la macro fonctionne sans l'appeler mais comme ça ne fonctionne pas tout seul j'aimerai savoir exactement ce que ça veut dire pour l'utiliser à bon escient. Peut-être que ma question est stupide pour les pro mais j'aime comprendre ce que je fais.
Merci de ta réponse
A+
Eve
Messages postés
22960
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
5700
3
Merci
Bonsoir,

Je répond à la place de néné s'il n'y voit pas d'inconvénient (il n'est pas là pour le dire de toute façon...)

Application.ScreenUpdating te désactive le rafraichissement écran.
Ca évite les clignotements et les scrolling lors de tes select et surtout ça accélère considérablement ta macro.
Tout les calculs se font en arrière plan
Ne pas oublier de remettre Application.ScreenUpdating=true à la fin que l'utilisateur ait le résultat.

eric

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62597 internautes nous ont dit merci ce mois-ci

evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
49 -
Bonsoir,
Merci Eric, je vois ce dont tu parles. Je pourrait donc saisir ces deux lignes pour mes autres macros car il est vrai que ça fait mal aux yeux.
A+
Eve
eriiic
Messages postés
22960
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
5700 > evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
-
Tout à fait, dès que la macro dure un peu et manipule des données un peu partout c'est préférable, ça fait plus propre et ça accélère le traitement.
Mais tu sais que tu n'es pas toujours obligée de selectionner une cellule pour la lire ou pour l'écrire, c'est souvent superflu
eric
1
Merci
bonjour en fait j'ai le meem probleme,je dois tester une ligne pour deerminer si une cas contient np np1 np2 sp sp1 sp2 et appliquer une couleur a la case mais je n'arrive pas a le faire qu'elqu'un peut m'aider j'utilise excel 2003
merci
Messages postés
50048
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 octobre 2019
10898
1
Merci
Bonjour, STIKER.

Tu es nouveau, d'accord ... Alors quelques recommandations de bienvenue :

1) Ne pas t'introduire dans la discussion de quelqu'un d'autre, mais lancer ta propre discussion en cliquant, en haut de la page à droite (couleur orange, même ligne que Forum / Bureautique), sur "Posez votre question".
2) A fortiori, ne pas entrer dans une discussion où personne n'est venue depuis novembre 2007 : Qui veux-tu qui la consulte ? (Je suis tombé dessus par hasard parce que cherchais autre chose).
3) Sois clair et précis dans tes explications : "je dois tester une ligne pour deerminer si une cas contient np np1 np2 sp sp1 sp2 et appliquer une couleur a la case " veut dire quoi ? La cellule doit changer de couleur si elle contient la totalité de ces 6 valeurs (21 caractères) ? N'importe laquelle de ces 6 valeurs ? Et dans ce cas pour prendre une couleur fixe, ou variable selon la valeur saisie ?
4) Chaque fois que possible (taille / confidentialité) mets ton fichier à notre disposition en utilisant www.cijoint.fr/ ou www.cjoint.com/

Donc à bientôt !
Messages postés
50048
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 octobre 2019
10898
0
Merci
Sois plus précise :
* Tu veux une réponse pour la version 2003 ou la version 2007 ?
* Tu veux absolument une macro ou une manipulation normale te suffit-elle ?
evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
49 -
Bonsoir,
Non j'ai besoin de la version 2002 ou 2003 (pas beaucoup de différence) mais surtout en macro
Merci
Eve
Messages postés
22960
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
5700
0
Merci
Bonoir,

Il est un peu tard donc je ne vais pas trop développer...
En macro, tu ne vas plus trop parler de mise en forme conditionnelle puisque c'est toi par programmation qui sélectionne les cellules et leur applique le format que tu veux.
Il n'y a donc plus de limitation.
Pour connaitre les propriétés qui t'interessent mets toi en enregistrement de macro et change la couleur de fond, de la police, change la police et sa taille et tu en auras déjà une bonne partie.
Pour les couleurs c'est souvent plus pratique de réserver des cellules où tu mets les couleurs, et tu récupères leurs valeurs :
couleur1 = [A1].Interior.ColorIndex
C'est plus facile à changer pour l'utilisateur sans toucher à ton code et sans t'embeter à retrouver le numéro de couleur.
Ensuite à toi de balayer ton tableau pour retrouver les cellules ayant les critères qui t'interessent et appliquer dessus les formats désirés.
Des methodes qui pourront te servir
.entirerow :
la ligne entière Ex: [A1].EntireRow.Interior.ColorIndex = 6
et .offset(ligne,colonne) :
Si tu balayes ta colonne F .offset(0,9).value te ramene la valeur 9 colonnes plus loin (la colonne O donc)

Voilà pour que tu démarres un peu...
Bon courage :-)

eric
evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
49 -
Merci Eriiic,
Oui il est tard pour moi aussi.
Je te remercie de ta réponse et je vais essayer ce que tu me dis (mais peut être pas avant 15 jours car j'aurai beaucoup de travail).
Je te dirai si j'ai trouvé mais si j'ai des petits soucis, j'espère que tu pourras encore m'aider.
Merci d'avance et bonne nuit.
A+
Eve
eriiic
Messages postés
22960
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
5700 > evevdll
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
-
Ah mais tu es partout toi...
Bonne nuit à toi aussi