Créer une MFC complexe (pour moi) en vba

able91

XLDnaute Nouveau
Bonjour,

Je fais appel à vos généreux service, afin de créé une MFC (mise en forme conditionnel) complexe du moins pour moi en VBA.

Je débute, et j'ai très envie d'apprendre c'est pourquoi se serai gentil de mettre des commentaires dans votre code pour que je ne vous sollicite pas inutilement et que je puisse progresser.

L'objectif est donc d’appliquer des couleurs selon ce que contiennent les cellules.
Par exemple que toutes les cellules de la ligne 8 et 13 qui contiennent les lettres M soit colorer en rouge.
Mais aussi que les cellules vides communes à ces 2 lignes soit colorer d'une autre couleur (par exemple marron), et le reste (donc non vides) d'encore une autre couleur (par exemple gris). Et que les cellules verte reste verte et donc ne subissent aucun changement de la part de la MFC.

Vous trouverez un fichier en pièce jointe pour vous donnez une idée de ce que je souhaite faire.

J’espère que c'est compréhensible, maintenant je vous explique mes difficultés, je sais changer la couleur d'une cellule en vba (range("xx:xx").interior.colorindex = x, par exemple) mais je ne sais pas luis appliquer des conditions telle qu'en fonction du texte à l’intérieur et de colorer des cellules vides communes.

C'est pourquoi j'ai besoin de votre d'aide, et je vous en remercie d'avance.
 

Pièces jointes

  • MFC VBA test.xlsx
    9.9 KB · Affichages: 37

CHRIS1945

XLDnaute Occasionnel
Re : Créer une MFC complexe (pour moi) en vba

Bonjour,

Tout d'abord il n'est pas nécessaire de gérer la MFC par VBA. Il suffit de la régler au niveau de l'onglet à traiter.

Je te joins ton fichier en retour avec le réglage tel que je l'ai compris à savoir :
1 ne pas toucher aux colonne T à X (en vert)
2 caractères dans la couleur désirée sauf le jaune ou j'ai mis brun car le jaune est illisible
3 fond "OR" si cellules correspondantes dans les 2 lignes sont à "vide"
4 fond gris pour le reste.

Pour voir les formules utilisées : positionne le curseur dans une des cellules concernées (B8 par exemple) et cliques sur "Mise en forme conditionnelle" sous l'onglet "Accueil" ensuite sur Gérer les règles : tu verras toutes les règles que j'ai mises en place.
Il y en a de 2 sortes :
1 pour les fonds où il faut utiliser les règles avec formules
2 pour les caractères où il faut utiliser les règles où la cellule est égale à quelque chose.

Si tu as besoin de plus d'explications reviens moi avec tes questions.

Pour ce qui est du remplissage des cellules, soit tu le fais manuellement soit par VBA et la MFC réagira au contenu.
Merci de confirmer si cela répond à tes attentes.
A+
Chris
 

Pièces jointes

  • MFC VBA test.xlsx
    9.9 KB · Affichages: 55

able91

XLDnaute Nouveau
Re : Créer une MFC complexe (pour moi) en vba

Merci beaucoup pour ta réponse.
J'aurai probablement du préciser que j'ai déjà réussi à faire cette MFC sans VBA.
En fait je souhaite le faire en VBA pour plusieurs raisons :
1 Pour apprendre
2 Pour que la MFC ne soit pas modifié lors d'un copie coller par exemple, car c'est mon problème principal le fichier où je veux l'appliquer est utilisé par d'autre personne (planning), et ces personnes font du copier coller pour le modifier tout au long de l'année. Le copier coller avec format je précise, créer de nouvelle MFC avec de nouvelles plages et davantage a chaque copier coller jusqu’à alourdir considérablement le fichier voir même à planter.
Je n'aurai pas se problème en VBA.

Au final le principal ce n'est même pas que tu fasses le code pour moi mais au moins m'orienté car je suis bloqué comme un imbécile devant mon micro code qui ne fonctionne pas :D.
 

jecherche

XLDnaute Occasionnel
Re : Créer une MFC complexe (pour moi) en vba

Bonjour,

Étant donné que c'est pour apprendre ... voici une "partance" comprenant seulement 3 conditions.

Ce n'est pas nécessairement le meilleur code; mais, il a l'avantage de fonctionner.


Jecherche
 

Pièces jointes

  • Copie de MFC VBA test(able91).xlsm
    22.8 KB · Affichages: 93

CHRIS1945

XLDnaute Occasionnel
Re : Créer une MFC complexe (pour moi) en vba

Bonjour,
Je vois que tu as déjà eu diverses réponses, voici ma proposition en annexe. Tu as un bouton macro qu'il suffit de cliquer pour que tes 2 plages soient remises en forme après que tes usagers aient massacrés le tableau avec leurs copié/collé.

Comment cela marche :

Pour la solution "Macro" se positionner sous l'onglet Macro

1 Pour éviter les redondances dans la MFC, je commence par annuler toute la mise en forme existante en faisant un copié/collé d'une ligne à vide (j'ai pris la ligne 2000000 en pensant que tu n'iras pas si loin dans ton tableau).
2 Ensuite je remet les bordures
3 Enfin je met en place la MFC (voir les commentaires dans la macro MFC)

Si tu as besoin de plus d'aide dis le

D'autre part, il y avait aussi moyen de régler cela sans VBA. Voici comment :

1 Tu dupliques ton onglet avec réglage MFC
2 tu laisses l'original (appelé BASE dans l'exemple) à la disposition des utilisateurs qui peuvent écraser la mise en forme (je conseille même de l'enlever totalement)
3 dans l'onglet copié tu mets en B8 la formule =SI(Base!B8="";"";Base!B8) puis tu dupliques dans les 2 plages. Cet onglet se met donc automatiquement à jour sur base de l'original MAIS EN CONSERVANT LA MFC.
4 Tu protèges cet onglet pour que personne ne puisse abîmer la MFC.
Tu obtiens donc ainsi un tableau "utilisateurs" sans mise en forme dans lequel on peut faire les copiés/collés et un tableau "propre" avec MFC pour toi. Cette façon de faire est également dans le fichier sous les onglet "Base" et "Tableau définitif".
J'espère que cela t'aidera.
A+
Chris
 

Pièces jointes

  • MFC VBA test2.xlsm
    31.1 KB · Affichages: 58

Discussions similaires

Statistiques des forums

Discussions
315 095
Messages
2 116 169
Membres
112 676
dernier inscrit
little_b