Macro pour mettre une couleur auto. dans tableau
Résolu
Tania
-
Gyrus Messages postés 3334 Date d'inscription Statut Membre Dernière intervention -
Gyrus Messages postés 3334 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais mettre une couleur automatique dans un tableau excel sans utiliser la mise en forme conditionnelle vue que mon critère n'est pas standard.
Je veux que mon tableau mettre la couleur selon ma légende (ex: tomates pourries en rouges; tomates vendues en vert ) .
Mon tableau contient la quantité de tomates récoltées ( donc des chiffres)
trimeste 1 trimeste 2
Tomates pourries 50000 500
Tomates vendues 150000 5000
J'aimerais mettre une couleur automatique dans un tableau excel sans utiliser la mise en forme conditionnelle vue que mon critère n'est pas standard.
Je veux que mon tableau mettre la couleur selon ma légende (ex: tomates pourries en rouges; tomates vendues en vert ) .
Mon tableau contient la quantité de tomates récoltées ( donc des chiffres)
trimeste 1 trimeste 2
Tomates pourries 50000 500
Tomates vendues 150000 5000
A voir également:
- Macro pour mettre une couleur auto. dans tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier un tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
6 réponses
Ton fichier en retour.
La procédure prend en compte la lettre ajoutée après le montant :
r pour rouge - pourries
o pour orange - en attente
v pour vert - vendues
https://www.cjoint.com/c/ECBu7Czw2TI
A+
La procédure prend en compte la lettre ajoutée après le montant :
r pour rouge - pourries
o pour orange - en attente
v pour vert - vendues
https://www.cjoint.com/c/ECBu7Czw2TI
A+
Tout d'abord, j'ai créé une plage nommée "Quantités" qui couvre la plage C7:N10 (voir Formules > Gestionnaire de noms).
La procédure est évènementielle. Il s'agit de la procédure Worksheet_Change qui est lancée lorsqu'une modification de cellule est détectée.
Target représente la cellule modifiée.
Quelques explications du code :
If Target.Count > 1 Then Exit Sub
'Si plusieurs cellules ont été modifiées, on sort de la procédure (ce qui évite une erreur dans le cas d'une suppression de cellules par exemple).
If Not Application.Intersect(Target, Range("Quantités")) Is Nothing Then
'Si la cellule modifiée fait partie de la plage "Quantités"
(littéralement, si l'intersection entre la plage "Quantités" et la cellule modifiée n'est pas rien)
Application.EnableEvents = False
'On désactive les évènements afin d'éviter une boucle infinie sur la procédure. En effet, la procédure est lancée par une modification de valeur de cellule mais la procédure elle-même change la valeur de la cellule modifiée puisqu'on supprime le dernier caractère ajouté avec l'instruction
Target = Left(Target, Len(Target) - 1)
Application.EnableEvents = True
Je te laisse deviner.
A+
La procédure est évènementielle. Il s'agit de la procédure Worksheet_Change qui est lancée lorsqu'une modification de cellule est détectée.
Target représente la cellule modifiée.
Quelques explications du code :
If Target.Count > 1 Then Exit Sub
'Si plusieurs cellules ont été modifiées, on sort de la procédure (ce qui évite une erreur dans le cas d'une suppression de cellules par exemple).
If Not Application.Intersect(Target, Range("Quantités")) Is Nothing Then
'Si la cellule modifiée fait partie de la plage "Quantités"
(littéralement, si l'intersection entre la plage "Quantités" et la cellule modifiée n'est pas rien)
Application.EnableEvents = False
'On désactive les évènements afin d'éviter une boucle infinie sur la procédure. En effet, la procédure est lancée par une modification de valeur de cellule mais la procédure elle-même change la valeur de la cellule modifiée puisqu'on supprime le dernier caractère ajouté avec l'instruction
Target = Left(Target, Len(Target) - 1)
Application.EnableEvents = True
Je te laisse deviner.
A+
Application.EnableEvents = True est effectivement la réactivation des évènements mais tu ne risques plus de boucler à l'infini sur la procédure puisque cette instruction est placée après celle de la modification de cellule.
L'intérêt de cette réactivation est de permettre d'utiliser à nouveau les évènements.
A+
L'intérêt de cette réactivation est de permettre d'utiliser à nouveau les évènements.
A+
Bonjour,
Je ne vois pas pourquoi tu ne peux pas utiliser une mise en forme conditionnelle.
Tu devrais joindre un fichier exemple.
Tu peux utiliser https://www.cjoint.com/
A+
Je ne vois pas pourquoi tu ne peux pas utiliser une mise en forme conditionnelle.
Tu devrais joindre un fichier exemple.
Tu peux utiliser https://www.cjoint.com/
A+
voilà le lien :
http://www.cjoint.com/confirm.php?cjoint=ECBtSSR8PKw
Je veux par exemple mettre en rouge la quantité de pommes pourries ou de tomates pourries ,en vert celles qui ont été vendues et en orange ,celle qui sont en attente de livraison .
Avec la mise en forme conditionnelle, il faut entrer un chiffre obligatoirement > ou < ou = ou contient .... . Tandis que si j'ai une macro qui me dit que si j'écris "60000r" signifie que ma cellule soit en rouge et m'affiche le nombre "60000" dans cette même cellule.
Mon problème est au niveau de la création de code.
http://www.cjoint.com/confirm.php?cjoint=ECBtSSR8PKw
Je veux par exemple mettre en rouge la quantité de pommes pourries ou de tomates pourries ,en vert celles qui ont été vendues et en orange ,celle qui sont en attente de livraison .
Avec la mise en forme conditionnelle, il faut entrer un chiffre obligatoirement > ou < ou = ou contient .... . Tandis que si j'ai une macro qui me dit que si j'écris "60000r" signifie que ma cellule soit en rouge et m'affiche le nombre "60000" dans cette même cellule.
Mon problème est au niveau de la création de code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Cyrus ,
ça fonctionne super Bien !!! mais j'aimerais comprendre ton code un peu Quand tu mets ça (qu'est ec que tu veux dire?) :
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("Quantités")) Is Nothing Then
Application.EnableEvents = False
et à la fin du code tu met ça :
Target = Left(Target, Len(Target) - 1)
Application.EnableEvents = True
ça fonctionne super Bien !!! mais j'aimerais comprendre ton code un peu Quand tu mets ça (qu'est ec que tu veux dire?) :
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("Quantités")) Is Nothing Then
Application.EnableEvents = False
et à la fin du code tu met ça :
Target = Left(Target, Len(Target) - 1)
Application.EnableEvents = True
Bonjour,
tes colonnes ne sont pas toujours dans le même ordre ?
Si oui tu peux le faire par MFC.
https://www.cjoint.com/c/ECCj0p3w2jr
eric
tes colonnes ne sont pas toujours dans le même ordre ?
Si oui tu peux le faire par MFC.
https://www.cjoint.com/c/ECCj0p3w2jr
eric