\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}