XL 2016 Copier la mise en forme d'une cellule MFC

Erizion

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide car après pas mal de recherche sur le forum ainsi que d'autres site je n'ai pas trouvé de réponse a ma question.

J'utilise un fichier Excel très simple pour suivre les intervention d'artisans sur différents chantiers, j'ai appliqué une mise en forme conditionnelle qui fait qu'en fonction du nom de la société renseigné, celle-ci change de couleur pour rendre plus lisible le planning.

La liste des sociétés change souvent, on en ajoute et supprime fréquemment. Actuellement, je dois recréer une règle de MFC a chaque fois que je rajoute une entreprise et choisir manuellement une couleur, ce qui fait que j'ai souvent des couleurs proches les unes des autres. J'ai créer une nouvelle liste dans laquelle j'ai utilisé les couleurs basique VBA, que je trouve facilement différenciables. Je souhaite que la MFC de mes cellules applique la mise en forme de la cellule de la liste si celle ci contient le même mot et pas une mise en forme choisie manuellement pour chaque règle. En gros il faudrait que le document fonctionne de la même manière mais que le format de MFC soit repris depuis la cellule type.

Nous sommes plusieurs a utiliser le fichier et les autres personnes ne peuvent pas ajouter ou supprimer d'entreprise de la liste car ils ne maitrisent pas du tout Excel et la MFC.
Je souhaiterais qu'ils puissent ajouter des entreprises en ayant uniquement a rentrer le nom de la société dans la liste de base.

Si quelqu'un a une solution pour faire cela je suis preneur.

Merci d'avance pour vos retour,
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour à toutes & à tous, bonjour @Erizion
Avec une MFC je ne sais pas faire, mais avec une petite macro ça peut donner cela :

Tables des couleurs utilisées (tableau structuré) : "_Tb_Artisans"
Tableau structuré "_Tb_Etat" à mettre en forme

Code de la feuille Etat (événement Change)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Inter As Range, C As Range
    Dim DC As Object
   
    Set Inter = Intersect(Target, Me.[_Tb_Etat[Artisan]])
    'Sortir si la modif ne concerne pas la colonne "Artisan" du tableau "_Tb_Etat"
    If Inter Is Nothing Then Exit Sub

    'Dictionnaire des couleurs (fond et police) utilisées
    Set DC = CreateObject("Scripting.dictionary")
    For Each C In [_Tb_Artisans].Cells
        'Couleurs de fond et de police
        DC(C.Value) = C.Interior.Color & Chr(9) & C.Font.Color
    Next C
    'Pour cas de non correspondance ou de cellule vide :
    DC("") = 16777215 & Chr(9) & 0
   
   'Mise en forme des cellules de la colonne "Artisan" concernées par la modif
    For Each C In Inter.Cells
        If DC.exists(C.Value) Then
            Col = Split(DC(C.Value), Chr(9))
            C.Interior.Color = CLng(Col(0))
            C.Font.Color = CLng(Col(1))
        Else
        Col = Split(DC(""), Chr(9))
            C.Interior.Color = CLng(Col(0))
            C.Font.Color = CLng(Col(1))
        End If
    Next C
   
End Sub
(On pourrait mettre en forme les lignes entières, mais sans savoir ici on se limite à la colonne Artisan)

Amicalement
Alain
 

Pièces jointes

  • Copier la mise en forme d'une cellule MFC.xlsm
    19.1 KB · Affichages: 11
Dernière édition:

Discussions similaires