[Tex/LaTex] Personalize a rectangle node tikz

nodestikz-pgf

What I want to do is reproduce this example:
enter image description here

and my code is the following (a little bit long, sorry):

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[scale=1]

\tikzset{
noeudA/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!30,
  minimum height = 10mm
  },
noeudB/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!20,
  minimum height = 10mm
  },
noeudC/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=green!10,
  minimum height = 12mm
  },
noeudD/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=blue!10,
  minimum height = 10mm
  },
feuille/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=blue!10,
  minimum height = 10mm
  },
segment/.style={
 very thick
 }
}

\def\DistanceInterFeuilles{1.3}

\def\NiveauA{0}
\def\NiveauB{-2}
\def\NiveauC{-4}
\def\NiveauD{-6}

% Noeuds (MODIFIABLES : Styles et Coefficients d'InterFeuilles)
\node[noeudA] (R) at (0,{\NiveauA}) {SCR};

\node[noeudB] (Ra) at (-4,{\NiveauB}) {Ajustement};
\node[noeudB] (Rb) at (0,{\NiveauB}) {BSCR};
\node[noeudB] (Rc) at (4,{\NiveauB}) {Opérationnel};

\node[noeudC] (Rba) at (-7.5, {\NiveauC}) {Marché};
\node[noeudC] (Rbb) at (-4.5, {\NiveauC}) {Santé};
\node[noeudC] (Rbc) at (-1.5, {\NiveauC}) {Contre-partie};
\node[noeudC] (Rbd) at (1.5, {\NiveauC}) {Vie};
\node[noeudC] (Rbe) at (4.5, {\NiveauC}) {Non-vie};
\node[noeudC] (Rbf) at (7.5, {\NiveauC}) {Actifs incorporels};

% Noeud Marché
\node[noeudD] (Rbaa) at (-8,{\NiveauD - (1)*\DistanceInterFeuilles}) {Taux d'intérêt};
\node[noeudD] (Rbab) at (-8,{\NiveauD - (2)*\DistanceInterFeuilles}) {Action};
\node[noeudD] (Rbac) at (-8,{\NiveauD - (3)*\DistanceInterFeuilles}) {Immobilier};
\node[noeudD] (Rbad) at (-8,{\NiveauD - (4)*\DistanceInterFeuilles}) {Spread};
\node[noeudD] (Rbae) at (-8,{\NiveauD - (5)*\DistanceInterFeuilles}) {Change};
\node[noeudD] (Rbaf) at (-8,{\NiveauD - (6)*\DistanceInterFeuilles}) {Concen\-tration};
\node[noeudD] (Rbag) at (-8,{\NiveauD - (7)*\DistanceInterFeuilles}) {Illiquidité};

% Noeud Santé
\node[noeudD] (Rbba) at (-5.5,{\NiveauD}) {SLT};
\node[noeudD] (Rbbaa) at (-5.5, {\NiveauD - (1)*\DistanceInterFeuilles -0.5}) {Mortalité};
\node[noeudD] (Rbbab) at (-5.5, {\NiveauD - (2)*\DistanceInterFeuilles -0.5}) {Longévité};
\node[noeudD] (Rbbac) at (-5.5, {\NiveauD - (3)*\DistanceInterFeuilles -0.5}) {Incapacité Invalidité};
\node[noeudD] (Rbbad) at (-5.5, {\NiveauD - (4)*\DistanceInterFeuilles -0.5}) {Rachat};
\node[noeudD] (Rbbae) at (-5.5,{\NiveauD - (5)*\DistanceInterFeuilles -0.5} ) {Dépenses };
\node[noeudD] (Rbbaf) at (-5.5, {\NiveauD - (6)*\DistanceInterFeuilles -0.5}) {Révision};
\node[noeudD] (Rbbb) at (-3.25,{\NiveauD}) {Catastrophe};
\node[noeudD] (Rbbc) at (-1, {\NiveauD}) {NSLT};
\node[noeudD] (Rbbca) at (-1, {\NiveauD - (1)*\DistanceInterFeuilles -0.5}) {Prime et réserve};
\node[noeudD] (Rbbcb) at (-1, {\NiveauD - (2)*\DistanceInterFeuilles -0.5}) {Rachat};

% Noeud Vie
\node[noeudD] (Rbda) at (2,{\NiveauD - (1)*\DistanceInterFeuilles}) {Mortalité};
\node[noeudD] (Rbdb) at (2,{\NiveauD - (2)*\DistanceInterFeuilles}) {Longévité};
\node[noeudD] (Rbdc) at (2,{\NiveauD - (3)*\DistanceInterFeuilles}) {Incapacité Invalidité};
\node[noeudD] (Rbdd) at (2,{\NiveauD - (4)*\DistanceInterFeuilles}) {Rachat};
\node[noeudD] (Rbde) at (2,{\NiveauD - (5)*\DistanceInterFeuilles}) {Dépenses};
\node[noeudD] (Rbdf) at (2,{\NiveauD - (6)*\DistanceInterFeuilles}) {Révision};
\node[noeudD] (Rbdg) at (2,{\NiveauD - (7)*\DistanceInterFeuilles}) {Catas\-trophe};

% Noeud Non Vie
\node[noeudD] (Rbea) at (4.5,{\NiveauD - (1)*\DistanceInterFeuilles}) {Prime et réserve};
\node[noeudD] (Rbeb) at (4.5,{\NiveauD - (2)*\DistanceInterFeuilles}) {Rachat};
\node[noeudD] (Rbec) at (4.5,{\NiveauD - (3)*\DistanceInterFeuilles}) {Catas\-trophe};

\coordinate (interm1) at (0,-1);
\draw[segment] (R)-- (interm1) -| (Ra);
\draw[segment] (R)--(Rb);
\draw[segment] (R)-- (interm1) -| (Rc);

\coordinate (interm2) at (0,-3);
\draw[segment] (Rb) -- (interm2) -| (Rba);
\draw[segment] (Rb)-- (interm2) -| (Rbb);
\draw[segment] (Rb)-- (interm2) -| (Rbc);
\draw[segment] (Rb)-- (interm2) -| (Rbd);
\draw[segment] (Rb)-- (interm2) -| (Rbe);
\draw[segment] (Rb)-- (interm2) -| (Rbf);

\coordinate (interm3) at (-9.5,-5.5);
\draw[segment] (Rba)|-(interm3);
\draw[segment] (interm3)|-(Rbaa);
\draw[segment] (interm3)|-(Rbab);
\draw[segment] (interm3)|-(Rbac);
\draw[segment] (interm3)|-(Rbad);
\draw[segment] (interm3)|-(Rbae);
\draw[segment] (interm3)|-(Rbaf);
\draw[segment] (interm3)|-(Rbag);

\coordinate (interm4) at (-4.5,-5);
\draw[segment] (Rbb)-- (interm4) -| (Rbba);
\draw[segment] (Rbb)-- (interm4) -| (Rbbb);
\draw[segment] (Rbb)-- (interm4) -| (Rbbc);

\coordinate (interm5) at (-4,-7);
\draw[segment] (Rbba)|-(interm5);
\draw[segment] (interm5)|-(Rbbaa);
\draw[segment] (interm5)|-(Rbbab);
\draw[segment] (interm5)|-(Rbbac);
\draw[segment] (interm5)|-(Rbbad);
\draw[segment] (interm5)|-(Rbbae);
\draw[segment] (interm5)|-(Rbbaf);

\coordinate (interm6) at (-2.4,-7);
\draw[segment] (Rbbc)|-(interm6);
\draw[segment] (interm6)|-(Rbbca);
\draw[segment] (interm6)|-(Rbbcb);

\coordinate (interm7) at (0.5,-5.5);
\draw[segment] (Rbd)|-(interm7);
\draw[segment] (interm7)|-(Rbda);
\draw[segment] (interm7)|-(Rbdb);
\draw[segment] (interm7)|-(Rbdc);
\draw[segment] (interm7)|-(Rbdd);
\draw[segment] (interm7)|-(Rbde);
\draw[segment] (interm7)|-(Rbdf);
\draw[segment] (interm7)|-(Rbdg);

\coordinate (interm8) at (6,-5.5);
\draw[segment] (Rbe)|-(interm8);
\draw[segment] (interm8)|-(Rbea);
\draw[segment] (interm8)|-(Rbeb);
\draw[segment] (interm8)|-(Rbec);

\end{tikzpicture}

\end{document}

The color are arbitrary, but as you can see on the example, some rectangle have a little triangle in the upper right corner, and I would like to reproduce that. For me, the rectangles appear as node style, but I don't know how to add extras on it.

Best Answer

One possibility might be to add a path picture to the style, e.g.

path picture={
   \fill [green!50!black] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }

So if you have

noeudA/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!30,
  minimum height = 10mm,
  path picture={
   \fill [green!50!black] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }
  }

Then the first node of your diagram will look like

enter image description here

Alternatively you could make a new upperlefttriangle style where the color is an argument, i.e.

upperlefttriangle/.style={
path picture={
   \fill [#1] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }
}

And then use

upperlefttriangle={<color>}

either in other styles, or in individual nodes.