VBA – Procédure pour avoir plusieurs mises en forme dans une même cellule

Bonjour à tous,

Je sollicite votre aide car mes compétences en VBA se retrouvent limitées

J’ai dans un fichier, des données dans la Colonne O et je souhaite modifier la couleur du texte présent dans certain cellule de cette colonne

Normalement c’est facile, je n’ai qu’à faire une mise en forme conditionnellement

Mais là où ça se complique, c’est que pour certaines cellules, je cherche un moyen d’avoir plusieurs mises en forme

La MEF que je souhaite obtenir se résume à cela pour les cellules dites « simple » (une seule ligne d’info)

Si la cellule contient :

- Uniquement le texte « Dispo » à Mette la police de la cellule en noir gras

- Uniquement une date à mettre la police de la cellule en bleu simple

- Uniquement le texte « att. délai » à Mettre le texte de la cellule en rouge simple

- La mention « N/A » ne rien faire

Maintenant si la cellule est dite « complexe » (contient plusieurs lignes d’info)

Exemple du contenu d’une seule cellule complexe :

« 2 pcs Dispo

3 pcs : 31/05/23

30 pcs : att. délai »

Alors que souhaite la mise en forme suivante :

- « 2 pcs Dispo » à en noir gras

- « 3 pcs : 31/05/23 » à en bleu simple

- « 30 pcs : att. délai » à en rouge simple

En PJ se trouve un exemple de ce que je souhaite obtenir

En Colonne O les données initiales

En Colonne Q un visuel des résultats que je souhaite obtenir

Bien sur le nombre de ligne à traiter varie constamment

18test456.xlsx (11.20 Ko)

Merci à tous

bonjour,

pour une cellule non "complexe", MFC doit pouvoir gérer.

pour une cellule "complexe" pas possible (à mon humble avis) avec MFC, il faut passer par VBA.

Oui je suis tout à fait d'accord

C'est l'aide que je demande humblement

Si quelqu'un est capable de m'aider en VBA ca sera super

20test456.xlsm (94.26 Ko)

Bonsoir Jabert,

en pj vous trouverez un code VBA pas beau, pas optimisé mais qui fonctionne pour les cas que vous proposez :
La colonne U de test est un copier-coller de la colonne O de votre jeu d'essai.
Pour chaque cas, sélectionner la cellule de la colonne U, Clic sur le bouton "sélectionner une cellule avant le test" pour exécuter la macro.
Bien sûr dans votre cas c'est sur worksheet_Change (colonne O) que vous devrez lancer la macro
QQ règles "imposées" par rapport au test "isdate" de la macro
- Les dates doivent être au format jj/mm/ssaa (j'ai rectifié les saisies du type jj/mm/aa)
- Toujours pour les dates des cas complexes : elles doivent être précédées de ": " (2 points + 1 blanc) par exemple 265 pcs : 15/05/2023

j'ai considéré, vu le jeu d'essai, peut-être à tort qu'il y avait ces règles :
- ordre imposé : Dispo avant Date avant Délai
- 3 lignes maximum
- 1 dispo maximum
- 2 dates maximum
- 1 attente délai maximum
- ALT + Entrée pour chaque ligne à l'intérieur d'une cellule Statut

Je ne connais pas votre niveau en VBA, je vous laisse regarder le code.

Je viens de voir votre dernière ligne "qui tue" : Bien sûr le nombre de ligne à traiter varie constamment
J'en conclus qu'il peut y avoir plus de 3 lignes.Dans ce cas mon code est KO :
Il faudrait le revoir en appelant une fonction qui traite 1 ligne, la fonction SPLIT appliquée au saut de ligne pourrait faire l'affaire. Le code serait beaucoup plus propre (pas de répétition de code et de IF ou CASE en cascade).

Je vous proposerai une solution paramétrique ce soir

Bonjour clr,

Merci beaucoup d'avoir pris de votre temps pour m'aider

Votre code convient pour ce que je souhaite, j'ai effectivement du ajuster 2 ou 3 lignes mais c'est bon ca fonctionne

Merci encore

voici la version "finale"
- avec paramétrage (j'ai ajouté un Onglet Paramétrages qui méritera peut-être qq explications même si j'ai commenté les cellules et le code VBA). Un bouton permet d'actualiser les statuts si vous avez modifier les conditions et/ou les formats à appliquer.
- toute modification d'un statut sur la feuille MFC déclenche la macro qui vérifie les conditions et applique les formats en conséquence

Il faudra changer les cellules nommées (par exemple PLAGE_STATUT actuellement =PFC!$Z$2:$Z$35)....
.
Je vous laisse regarder et vous donnerai des explications

27test456.xlsm (33.87 Ko)
Rechercher des sujets similaires à "vba procedure mises forme meme"