This code:
\begin{enumerate}
\item Item One \def\commandOne{\alph{enumi} : One}
\item Item Two \def\commandTwo{\alph{enumi} : Two}
\item \commandOne, \commandTwo
\end{enumerate}
Gives this output:
Item One
Item Two
c : One, c : Two
I want that Latex evaluate \alph{enumi} when the command is defined instead of when the command is called, is it possible?
Instead of
\def, use\edefwhich expands at the time of definition (see also\gdefand\xdef). This can of course cause problems if you want parts of it not expanded. For those cases you can use\expandafteras shown in this answer.