\documentclass{article}
\usepackage[margin=1cm,a5paper]{geometry}
\usepackage{listofitems}
\setlength\parindent{0pt}

\makeatletter
%===aux macro (mod)
\newcommand\internalmod[3][\intgmodres]{%
  \xdef#1{\fpeval{trunc(#2 - (#3)*trunc((#2)/(#3),0), 0)}}%
  \ifnum#1<0\relax%
    \xdef#1{\inteval{#1 + (#3)}}%
  \fi%
}

\NewDocumentCommand\itemcycltomacro{ m O{1} m }{%
  \xdef\tmpargcycllist{\fpeval{round(#2,0)}}%
  \ifnum\tmpargcycllist=0\relax%
    \def#3{}%
  \else%
    \ifnum\tmpargcycllist>0\relax%
    \internalmod{#2-1}{\csname\expandafter\@gobble\string#1len\endcsname}%
  \else%
    \internalmod{#2}{\csname\expandafter\@gobble\string#1len\endcsname}%
  \fi%
  \xdef\inttmpidx{\inteval{\intgmodres+1}}%
  \itemtomacro#1[\inttmpidx]{#3}%
  \fi%
}
\makeatother

\begin{document}

\def\listecouleurs{yellow,red,blue,green,purple,teal,gray}
\setsepchar{,}%
\readlist*\malistecouleurs{\listecouleurs}

\texttt{Liste~~~~~~} : \listecouleurs

\texttt{Liste[1]~~~} : \itemcycltomacro\malistecouleurs[1]{\macouleur}\macouleur\par
\texttt{Liste[6]~~~} : \itemcycltomacro\malistecouleurs[6]{\macouleur}\macouleur\par
\texttt{Liste[15]~~} : \itemcycltomacro\malistecouleurs[15]{\macouleur}\macouleur\par
\texttt{Liste[-1]~~} : \itemcycltomacro\malistecouleurs[-1]{\macouleur}\macouleur\par
\texttt{Liste[-100]} : \itemcycltomacro\malistecouleurs[-100]{\macouleur}\macouleur\par

\end{document}