
\documentclass{article}
\thispagestyle{empty}
\setlength{\parskip}{10pt}
\setlength{\parindent}{0pt}
\def\thing[#1][#2]#3{%
  premier argument optionnel entre crochets : \textbf{#1}\\
  second argument optionnel entre crochets : \textbf{#2}\\
  argument obligatoire : \textbf{#3} }

\begin{document}

\thing[le premier argument][un autre défaut]{j'ai défini le premier argument entre crochets mais pas le second}

\thing[le premier argument][le second argument]{j'ai défini les deux arguments optionnels}

\thing[][le second argument]{le premier argument est vide}

\thing[valeur par défaut][le second argument]{pour obtenir la valeur par défaut du premier argument et définir le second argument, j'ai dû indiquer explicitement la valeur par défaut}

\end{document}
