Mise en forme conditionnelle speciale...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Drahtaar

XLDnaute Nouveau
Bonjour a tous,

Je voudrais soumettre une petite question...
Je suis sous Excel 2007.
Voila, ma question est simple :
J'ai une feuille avec des données clients.
J'ai une cellule de saisie de numero de client sur cette feuille. Apres je lance une macro qui repose sur cette cellule et qu remplit une autre feuille (facture).
Dans la meme feuille où j'ai la cellule de saisie, j'ai une colonne des numeros de client deja saisis. Je souhaite que la cellule de ma colonne correspondant au numero de client que je saisis sur ma cellule de saisie ait une mise en forme (couleur de fond). En gros, lorsque je saisis le numero de client 1021, la cellule de ma colonne correspondant au 1021 passe au vert. J'ai pensé a la mise en forme conditionnelle. "Si telle cellule = a la cellule de saisie, j'applique cette mise en forme". Et j'applique cette mise en forme sur la colonne des numeros de client.
Le seul hic qui me pose probleme c'est que je voudrais que cette mise en forme soit conservée. Car le probleme, c'est que lorsque je saisis une nouveau code client dans la cellule de saisie (par ex : 1022), et bien la cellule 1021 de ma colonne ne repond plus au critere, c'est la 1022 qui passe au vert et la 1021 redevient blanche. Or je voudrais qu'elle reste verte. Ca me donnerait l'info que j'ai deja saisi ledit num de client dans ma cellule de saisie.
Arf..suis je clair ?
 
Re : Mise en forme conditionnelle speciale...

Bonjour,

Si tu as déja une macro qui repose (comme tu dis) sur cette cellule, je suppose que dans ta macro, tu utilises également la colonne des n° de client saisi pour rechercher le bon ! Donc dans ce cas là, pourquoi ne pas ajouter une ligne à ta macro pour mettre un fond vert à ladite cellule.

Sinon postes ton fichier avec la macro.

Caillou
 
Re : Mise en forme conditionnelle speciale...

Merci pour la reponse.
Je joins mon fichier.
J'ai deux fichiers, le premier ""Test gestion des commandes.xlsm" sur lequel est enregistré la macro, et un autre classeur excel sur lequel sont renvoyées les donnees de ma macro. mais je n'ai pas réussi a joindre ce 2eme fichier, il m'indique "fichier non valide", alors qu'il est ok chez moi...
Donc mon premier fichier "Test gestion des commandes.xlsm" contient une macro appelée Macro1.
Dans cette macro, j'avais un auto open que j'ai mis en commentaire pour qu'il n'y ait pas de souci sur le chemin du second fichier qui s'ouvrait automatiquement.
Le deuxieme fichier sur lequel s'execute Macro1 est "Test fiche de commande.xlsx".
Il contient simplement des formules de rechercheV sur le "Test gestion de commande.xlsm".
Voila comment ca fonntionne :
lorsque les deux fichiers sont ouverts, si on rentre en D5 dans "Test gestion des commandes.xlsm" un numero de client de la colonne B, et qu'on clique sur le bouton Impression commande en D4, cela remplit le fichier "Test fiche de commande.xlsx".
Rien de plus basique.
J'ai enlevé des fonctions de ma macro (impression auto, fermeture auto etc) car inutile pour mon probleme.
Je voudrais que lorsque j'execute la macro1 (donc en cliquant sur le bouton) la cellule correspondant à D5 dans la colonne B passe au vert. Ainsi, si je saisis 6006 dans D5, et que j'execute la macro, la cellule B11 passerait au vert. Le probleme etant que lorsque j'executerai la macro apres avec un autre numero, par exemple 6010, c'est B15 qui passera au vert et B11 redeviendra blanc avec le principe de mise en forme conditionnelle.
Car je souhaiterais que les cellules de la colonne B restent au vert s'ils sont passé une fois au vert. Cela m'indiquerait en fait que j'ai édité ma fiche de commande.

Est ce comprehensible ?
 

Pièces jointes

Re : Mise en forme conditionnelle speciale...

Re,

Tu rajoutes ce code au début le ta macro (Macro1)
Par contre, tu as plein de mises en forme conditionnelles inutiles que tu dois au préalable supprimer. Ensuite tu appliques une couleur de remplissage (par avec la mise en forme conditionnelle) à la cellule D5. Lorque tu lances la macro, elle compare le contenu de D5 avec les cellules de la colonne B, si elle trouve une valeur identique, elle lui applique la même couleur de remplissage que D5.

J'ai testé, cela fonctionne :

Code:
  Dim c As Range
  For Each c In Range("B8:B" & Range("B8").End(xlDown).Row)
    If c.Value = Range("D5").Value Then
      c.Interior.ColorIndex = Range("D5").Interior.ColorIndex
    End If
  Next


Caillou
 
Re : Mise en forme conditionnelle speciale...

Merci beaucoup Caillou pour ton aide....
Quelle sont les lignes de mise en forme dans ma macro que je dois supprimer ?
J'ai effectivement mis des mises en forme de date je crois, alors que j'aurais pu le faire sur le fichier lui meme a la base.
Du coup, j'ai du faire une betise a l'enregistrement de ma macro car la cellule D5 a un fond vert que je ne peux modifier avec le format de cellule traditionnel.
Mais sinon le code que tu m'as donné fonctionne !
Merciii.
Si tu peux juste me l'expliquer un tant soit peu que je le comprenne, ca serait tres gentil. mais je ne veux pas abuser...
 
Re : Mise en forme conditionnelle speciale...

Re,

1. Les mises en forme que tu dois supprimer (à mon avis) sont les mises en forme conditionnelles (elles sont sur la feuille et non dans la macro).
Par exemple pour la cellule D5, si tu vas dans Mise en forme conditionnelle/Gérer les règles, ru vas voir qu'il y a plein de bazar ..... (c'est surement pour ca que tu ne peux plus mettre cette cellule en forme normalement)

2. Quelques explications :
Code:
  'Déclaration d'une variable objet de type cellule
  Dim c As Range
  'Boucle Pour chaque cellule à partir de B8 jusqu'a la prochaine cellule vide de la colonne B
  For Each c In Range("B8:B" & Range("B8").End(xlDown).Row)
    'Si la cellule (de la boucle) est égale à la cellule D5
    If c.Value = Range("D5").Value Then
      'Alors on remplit la cellule avec la même couleur que D5
      c.Interior.ColorIndex = Range("D5").Interior.ColorIndex
    End If
  Next
 
Re : Mise en forme conditionnelle speciale...

Merci encore pour ton aide precieuse...
Effectivement j'avais fait plein de mise en forme conditionnelles que j'avais pas supprimé et c'est pas propre, j'ai tut viré là.
Ok je comprends effectivement un peu le code.
Mais si jamais la cellule que je desire colorier n'est plus la cellule de la colonne B (donc ayant le meme contenu que D5, la cellule de saisie), mais la cellule de la colonne (soit le nom), si je comprends bien le code, ca n'ira pas en modifiant B8:B en D8😀 etc...n'est ce pas ?
 
Re : Mise en forme conditionnelle speciale...

Je re-reviens....
j'ai bien compris le code que tu m'as donné maintenant.

J'ai besoin du coup de modifier celui ci car je ne veux pas que ce soit la cellule trouvée dans la boucle (donc c dans le code) qui soit mise en forme mais une autre cellule de la meme ligne que celle trouvée or je ne connais pas assez vba pour modifier correctement la formule.
En gros, tout me convient sauf apres le then où "c.Interior.ColorIndex = Range("D5").Interior.ColorIndex" passe la cellule trouvée dans la boucle B8:B avec la mise en forme de D5 et en fait je voudrais que cela soit une autre cellule de la ligne de la cellule trouvée dans la boucle.
j'espere que je m'exprime bien.
 
Re : Mise en forme conditionnelle speciale...

Re,

Pas besoin de VLookUp, il faut rajouter un Offset qui permet de spécifier un déplacement.
Donc à la place de la ligne
Code:
c.Interior.ColorIndex = Range("D5").Interior.ColorIndex
tu mets
Code:
c.Offset(0, 2).Interior.ColorIndex = Range("D5").Interior.ColorIndex
Offset(0, 2) indique 2 cellules à droite de c (donc ici la colonne D)

Caillou
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
200
Réponses
2
Affichages
154
Retour