% Author                         : C. Pierquet
% licence                        : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{WriteOnGrid}[2026/08/21 v0.20a package to write on grid lines]
% 0.20a  Format 5x5 avec marge + commandes autonomes pour les pleines page (sans rajout ultérieur)
% 0.1.9  Grille Milli avec couleurs prédéfinies
% 0.1.8  Option pour la taille des règlures (via style tikzset)
% 0.1.7  Option pour régler la marge pour les PleinePageCinqCinq
% 0.1.6  Commande pour calculer le nombre de lignes à insérer en fin de page / options Auto
% 0.1.5  Choix de la réglure pour le seyes (en pretest) + amélioration de la gestion des paragraphes
% 0.1.4  Suppression des options de xcolor (définition manuelle des couleurs)
% 0.1.3  Ajout de commandes simples pour des mini-quadrillages autonomes, sans texte
% 0.1.2  Modification locale des couleurs + raccourcis couleurs Seyes / Ruled
% 0.1.1  Ajout de la couleur + modifications mineures + grille "Ruled" + grilles pleine page !
% 0.1.0  Version initiale [fr] & [en]

%------Packages utiles
\RequirePackage{tikz}
\RequirePackage{simplekv}
\RequirePackage{xstring}
%librairies tikz
\usetikzlibrary{calc,positioning}

%------Variables
\newcounter{lgquadri}%compteur des lignes, qui sera incrémenté

%------Styles
\tikzset{WoGridp/.style={semithick}}
\tikzset{WoGridi/.style={line width=0.6pt}}
\tikzset{WoGrids/.style={thin}}
\tikzset{WoGridbar/.style={thick}}

%-----Calcul du nombre de lignes/colonnes
\NewDocumentCommand\GridCalcNbCols{ O{\ColAuto} m }{%
  \IfStrEqCase{#2}{%
    {Seyes}{\xdef#1{\fpeval{trunc((\the\linewidth)/(22.762192pt),0)}}}%
    {5x5}{\xdef#1{\fpeval{trunc((\the\linewidth)/(14.22637pt),0)}}}%
    {Ruled}{\xdef#1{\fpeval{trunc((\the\linewidth)/(25.607466pt),0)}}}%
    {Milli}{\xdef#1{\fpeval{trunc((\the\linewidth)/(28.45274pt),0)}}}%
  }[\xdef#1{\fpeval{trunc((\the\linewidth)/(22.762192pt),0)}}]%
}

\NewDocumentCommand\GridCalcNbLignes{ O{\LgnAuto} m }{%
  \edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
  \IfStrEqCase{#2}{%
    {Seyes}{\xdef#1{\fpeval{trunc((\the\measurepage)/(22.762192pt),0)}}}%
    {5x5}{\xdef#1{\fpeval{trunc((\the\measurepage)/(14.22637pt),0)}}}%
    {Ruled}{\xdef#1{\fpeval{trunc((\the\measurepage)/(25.607466pt),0)}}}%
    {Milli}{\xdef#1{\fpeval{trunc((\the\measurepage)/(28.45274pt),0)}}}%
  }[\xdef#1{\fpeval{trunc((\the\measurepage)/(22.762192pt),0)}}]%
}

\NewDocumentCommand\GridCalcAuto{ O{\LgnAuto} O{\ColAuto} m }{%
  \edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
  \IfStrEqCase{#3}{%
    {Seyes}{\xdef#1{\fpeval{trunc((\the\measurepage)/(22.762192pt),0)}}\xdef#2{\fpeval{trunc((\the\linewidth)/(22.762192pt),0)}}}%
    {5x5}{\xdef#1{\fpeval{trunc((\the\measurepage)/(14.22637pt),0)}}\xdef#2{\fpeval{trunc((\the\linewidth)/(14.22637pt),0)}}}%
    {Ruled}{\xdef#1{\fpeval{trunc((\the\measurepage)/(25.607466pt),0)}}\xdef#2{\fpeval{trunc((\the\linewidth)/(25.607466pt),0)}}}%
    {Milli}{\xdef#1{\fpeval{trunc((\the\measurepage)/(28.45274pt),0)}}\xdef#2{\fpeval{trunc((\the\linewidth)/(28.45274pt),0)}}}%
  }[\xdef#1{\fpeval{trunc((\the\measurepage)/(22.762192pt),0)}}\xdef#2{\fpeval{trunc((\the\linewidth)/(22.762192pt),0)}}]%
}

%-----Couleurs utiles
\definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24}
\definecolor{PapierRose}{HTML}{E6B8E6}
\definecolor{PapierGris}{HTML}{D7E2EE}

\definecolor{PapierMilliDefautFonce}{HTML}{f39c12}
\definecolor{PapierMilliDefautInter}{HTML}{bdc3c7}
\definecolor{PapierMilliDefautClair}{HTML}{e0e0e0}

\definecolor{PapierMilliGrisFonce}{HTML}{707070}
\definecolor{PapierMilliGrisInter}{HTML}{bdc3c7}
\definecolor{PapierMilliGrisClair}{HTML}{f0f0f0}

\definecolor{PapierMilliBleuFonce}{HTML}{1565c0}
\definecolor{PapierMilliBleuInter}{HTML}{90caf9}
\definecolor{PapierMilliBleuClair}{HTML}{e3f2fd}

\definecolor{PapierMilliChaudFonce}{HTML}{d84315}
\definecolor{PapierMilliChaudInter}{HTML}{ffab91}
\definecolor{PapierMilliChaudClair}{HTML}{fbe9e7}

\definecolor{PapierMilliVertFonce}{HTML}{2e7d32}
\definecolor{PapierMilliVertInter}{HTML}{a5d6a7}
\definecolor{PapierMilliVertClair}{HTML}{e8f5e9}

\definecolor{PapierMilliContrasteFonce}{HTML}{000000}
\definecolor{PapierMilliContrasteInter}{HTML}{999999}
\definecolor{PapierMilliContrasteClair}{HTML}{cccccc}

\def\CoulSeyes{PapierRose/PapierGris}
\def\CoulRuled{PapierGris/TyrianPurple}
\def\CoulMilli{PapierMilliDefautFonce/PapierMilliDefautInter/PapierMilliDefautClair}
\def\CoulMilliGris{PapierMilliGrisFonce/PapierMilliGrisInter/PapierMilliGrisClair}
\def\CoulMilliBleu{PapierMilliBleuFonce/PapierMilliBleuInter/PapierMilliBleuClair}
\def\CoulMilliChaud{PapierMilliChaudFonce/PapierMilliChaudInter/PapierMilliChaudClair}
\def\CoulMilliVert{PapierMilliVertFonce/PapierMilliVertInter/PapierMilliVertClair}
\def\CoulMilliContraste{PapierMilliContrasteFonce/PapierMilliContrasteInter/PapierMilliContrasteClair}

\def\ColSeyes{PapierRose/PapierGris}
\def\ColRuled{PapierGris/TyrianPurple}
\def\ColMilli{PapierMilliDefautFonce/PapierMilliDefautInter/PapierMilliDefautClair}
\def\ColMilliGray{PapierMilliGrisFonce/PapierMilliGrisInter/PapierMilliGrisClair}
\def\ColMilliBlue{PapierMilliBleuFonce/PapierMilliBleuInter/PapierMilliBleuClair}
\def\ColMilliWarm{PapierMilliChaudFonce/PapierMilliChaudInter/PapierMilliChaudClair}
\def\ColMilliGreen{PapierMilliVertFonce/PapierMilliVertInter/PapierMilliVertClair}
\def\ColMilliContrast{PapierMilliContrasteFonce/PapierMilliContrasteInter/PapierMilliContrasteClair}

% \def\CoulSeyes{Plum!75/LightSteelBlue!50}
% \def\CoulRuled{LightSteelBlue!50/TyrianPurple}
% \def\ColSeyes{Plum!75/LightSteelBlue!50}
% \def\ColRuled{LightSteelBlue!50/TyrianPurple}

%------Commandes [fr]
\newcommand\PasseLigne{\addtocounter{lgquadri}{1}}%passer une ligne

\defKV[LigneQuadrill]{Echelle=\def\QuadEchelle{#1}}%déf des clés
\setKVdefault[LigneQuadrill]{DecalV=0pt,DecalH=0,Sep=0pt,Echelle=1}%valeurs par défaut

\NewDocumentCommand\EcrireLigne{ O{} D<>{left} m }{%écrire sur les lignes l'une après l'autre
  \addtocounter{lgquadri}{1}
  \useKVdefault[LigneQuadrill]
  \setKV[LigneQuadrill]{#1}
  \node[text width=\fpeval{\CoeffUnite*\ValeurCarreau*\QuadNbCol/\QuadEchelle-\CoeffUnite*\ValeurCarreau*\useKV[Quadrill]{Marge}/\QuadEchelle}cm,align=#2,scale=\QuadEchelle,anchor=base west,inner sep={\useKV[LigneQuadrill]{Sep}}] at ($({\ValeurCarreau*\useKV[Quadrill]{Marge}+\ValeurCarreau*\useKV[LigneQuadrill]{DecalH}},{-\ValeurCarreau*\thelgquadri})+(0.025,\useKV[LigneQuadrill]{DecalV})$) {\strut #3} ;
}

%déf des clés

\defKV[Quadrill]{%
  Grille=\def\QuadType{#1},%
  NbCarreaux=\def\QuadNbCar{#1},%
  Elargir=\def\QuadElar{#1},%
  CouleurBarreSeyes=\def\QuadCoulSeyes{#1},%
  ReglureSeyes=\def\QuadReglureSeyes{#1}
}

\setKVdefault[Quadrill]{%
  NbCarreaux=17x5,%
  Unite=1,%
  Marge=0,%
  Elargir=0,%
  Cadre=false,%
  Grille=5x5,%
  AffBarre=true,%
  CouleurBarreSeyes={red!75},%
  ReglureSeyes=2
}

\NewDocumentCommand\AffQuadrillage{ O{} D<>{lightgray!66/lightgray!33/lightgray!50} }{%affichage simple du quadrillage
  \setcounter{lgquadri}{0}%on réinitialise les lignes
  \useKVdefault[Quadrill]%on met les clés par défaut
  \setKV[Quadrill]{#1}%on lit les clés
  %si une ou deux ou trois couleurs...
  \StrCount{#2}{/}[\tmpnbofcolors]%
  \ifnum\tmpnbofcolors=0\relax%
    \def\QuadCoulA{#2}\def\QuadCoulB{#2}\def\QuadCoulC{#2}%
  \fi%
  \ifnum\tmpnbofcolors=1\relax%
    \StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}%
    \def\QuadCoulC{\QuadCoulB}%
  \fi%
  \ifnum\tmpnbofcolors=2\relax%
    \StrBefore[1]{#2}{/}[\QuadCoulA]%
    \StrBetween[1,2]{#2}{/}{/}[\QuadCoulB]%
    \StrBehind[2]{#2}{/}[\QuadCoulC]%
  \fi%
  %\QuadCoulA+\QuadCoulB+\QuadCoulC
  %\IfSubStr{#2}{/}%on récupère les couleurs
  %  {\StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}}
  %  {\def\QuadCoulA{#2}\def\QuadCoulB{#2}}%
  %détermination des nb de carreaux, sans unite... ? TEST !!!!!!
  \IfSubStr{\QuadNbCar}{Auto}%
    {%
      \GridCalcAuto[\QuadNbLig][\QuadNbCol]{\QuadType}%
      \IfSubStr{\QuadNbCar}{Auto*}%
        {%
          \StrCount{\QuadNbCar}{*}[\tmpnbetoiles]%
          \xdef\QuadNbLig{\inteval{\QuadNbLig+\tmpnbetoiles}}%
        }%
        {}%
    }%
    {%
      \IfBeginWith{\QuadNbCar}{C}%
        {%
          \GridCalcNbCols[\QuadNbCol]{\QuadType}%
          \StrBehind{\QuadNbCar}{x}[\QuadNbLig]%
        }%
        {%
          \IfEndWith{\QuadNbCar}{L}%
            {%
              \GridCalcNbLignes[\QuadNbLig]{\QuadType}%
              \StrBefore{\QuadNbCar}{x}[\QuadNbCol]%
            }%
            {%
              \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
            }%
        }%
    }%
  %suite des calculs
  \IfStrEq{\QuadType}{Seyes}%les types de quadrillages
    {\xdef\ValeurCarreau{0.8}\xdef\CoeffUnite{\fpeval{(\QuadReglureSeyes)/2}}}%
    {}%
  \IfStrEq{\QuadType}{5x5}%
    {\xdef\ValeurCarreau{0.5}\xdef\CoeffUnite{1}}%
    {}%
  \IfStrEq{\QuadType}{Ruled}%
    {\xdef\ValeurCarreau{0.9}\xdef\CoeffUnite{1}}%
    {}%
  \IfStrEq{\QuadType}{Milli}%
    {\xdef\ValeurCarreau{1}\xdef\CoeffUnite{1}}%
    {}%
  \IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
    {\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
    {\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
  \begin{tikzpicture}[xscale={\CoeffUnite*\useKV[Quadrill]{Unite}},yscale={\CoeffUnite*\useKV[Quadrill]{Unite}}]
    \useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
    \IfStrEq{\QuadType}{Seyes}%
      {%
        \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \ifboolKV[Quadrill]{AffBarre}
          {
            \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
          }{}
      }%
      {}%
    \IfStrEq{\QuadType}{5x5}%
      {%
        \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
      }%
      {}%
    \IfStrEq{\QuadType}{Milli}%
      {%
        \draw[xstep=0.1,ystep=0.1,WoGrids,\QuadCoulC] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli s
        \draw[xstep=0.5,ystep=0.5,WoGridi,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli i
        \draw[xstep=1,ystep=1,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli p
      }%
      {}%
    \IfStrEq{\QuadType}{Ruled}%
    {%
      \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
      %\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
      \ifboolKV[Quadrill]{AffBarre}
        {
          \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
        }{}
    }%
    {}%
    \ifboolKV[Quadrill]{Cadre}%cadre pour visualiser la "marge" (officielle)
      {\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
      {}%
  \end{tikzpicture}%
}

\NewDocumentEnvironment{EnvQuadrillage}{ O{} D<>{lightgray!66/lightgray!33/lightgray!50} }%créer le quadrillage, couleurs ?
{%
  \setcounter{lgquadri}{0}%on réinitialise les lignes
  \useKVdefault[Quadrill]%on met les clés par défaut
  \setKV[Quadrill]{#1}%on lit les clés
  %si une ou deux ou trois couleurs...
  \StrCount{#2}{/}[\tmpnbofcolors]%
  \ifnum\tmpnbofcolors=0\relax%
    \def\QuadCoulA{#2}\def\QuadCoulB{#2}\def\QuadCoulC{#2}%
  \fi%
  \ifnum\tmpnbofcolors=1\relax%
    \StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}%
    \def\QuadCoulC{\QuadCoulB}%
  \fi%
  \ifnum\tmpnbofcolors=2\relax%
    \StrBefore[1]{#2}{/}[\QuadCoulA]%
    \StrBetween[1,2]{#2}{/}{/}[\QuadCoulB]%
    \StrBehind[2]{#2}{/}[\QuadCoulC]%
  \fi%
  %détermination des nb de carreaux, sans unite... ? TEST !!!!!!
  \IfSubStr{\QuadNbCar}{Auto}%
    {%
      \GridCalcAuto[\QuadNbLig][\QuadNbCol]{\QuadType}%
      \IfSubStr{\QuadNbCar}{Auto*}%
        {%
          \StrCount{\QuadNbCar}{*}[\tmpnbetoiles]%
          \xdef\QuadNbLig{\inteval{\QuadNbLig+\tmpnbetoiles}}%
        }%
        {}%
    }%
    {%
      \IfBeginWith{\QuadNbCar}{C}%
        {%
          \GridCalcNbCols[\QuadNbCol]{\QuadType}%
          \StrBehind{\QuadNbCar}{x}[\QuadNbLig]%
        }%
        {%
          \IfEndWith{\QuadNbCar}{L}%
            {%
              \GridCalcNbLignes[\QuadNbLig]{\QuadType}%
              \StrBefore{\QuadNbCar}{x}[\QuadNbCol]%
            }%
            {%
              \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
            }%
        }%
    }%
  %suite des calculs
  \IfStrEq{\QuadType}{Seyes}%les types de quadrillages
    {\xdef\ValeurCarreau{0.8}\xdef\CoeffUnite{\fpeval{(\QuadReglureSeyes)/2}}}%
    {}%
  \IfStrEq{\QuadType}{5x5}%
    {\xdef\ValeurCarreau{0.5}\xdef\CoeffUnite{1}}%
    {}%
  \IfStrEq{\QuadType}{Ruled}%
    {\xdef\ValeurCarreau{0.9}\xdef\CoeffUnite{1}}%
    {}%
  \IfStrEq{\QuadType}{Milli}%
    {\xdef\ValeurCarreau{1}\xdef\CoeffUnite{1}}%
    {}%
  \IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
    {\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
    {\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
  \begin{tikzpicture}[xscale={\CoeffUnite*\useKV[Quadrill]{Unite}},yscale={\CoeffUnite*\useKV[Quadrill]{Unite}}]
    \useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
    \IfStrEq{\QuadType}{Seyes}%
      {%
        \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \ifboolKV[Quadrill]{AffBarre}
          {
            \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
          }{}
      }%
      {}%
    \IfStrEq{\QuadType}{5x5}%
      {%
        \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
      }%
      {}%
    \IfStrEq{\QuadType}{Milli}%
      {%
        \draw[xstep=0.1,ystep=0.1,WoGrids,\QuadCoulC] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli s
        \draw[xstep=0.5,ystep=0.5,WoGridi,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli i
        \draw[xstep=1,ystep=1,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli p
      }%
      {}%
    \IfStrEq{\QuadType}{Ruled}%
    {%
      \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
      %\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
      \ifboolKV[Quadrill]{AffBarre}
        {
          \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
        }{}
    }%
    {}%
    \ifboolKV[Quadrill]{Cadre}%cadre pour visualiser la "marge" (officielle)
      {\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
      {}%
  }%
  {%
  \end{tikzpicture}%
}%

%------Commandes [en]
\newcommand\PassLine{\addtocounter{lgquadri}{1}}%passer une ligne

\defKV[LineQuadril]{Scale=\def\QuadEchelle{#1}}%déf des clés
\setKVdefault[LineQuadril]{OffsetV=0pt,OffsetH=0,Sep=0pt,Scale=1}%valeurs par défaut

\NewDocumentCommand\WriteLine{ O{} D<>{left} m }{%écrire sur les lignes l'une après l'autre
  \addtocounter{lgquadri}{1}
  \useKVdefault[LineQuadril]
  \setKV[LineQuadril]{#1}
  \node[text width=\fpeval{\ValeurCarreau*\QuadNbCol/\QuadEchelle-\ValeurCarreau*\useKV[Quadrill]{Marge}/\QuadEchelle}cm,align=#2,scale=\QuadEchelle,anchor=base west,inner sep={\useKV[LineQuadril]{Sep}}] at ($({\ValeurCarreau*\useKV[Quadril]{Margin}+\ValeurCarreau*\useKV[LineQuadril]{OffsetH}},{-\ValeurCarreau*\thelgquadri})+(0.025,\useKV[LineQuadril]{OffsetV})$) {\strut #3} ;
}

\defKV[Quadril]{Grid=\def\QuadType{#1},NumSquares=\def\QuadNbCar{#1},Enlarge=\def\QuadElar{#1}}%déf des clés
\setKVdefault[Quadril]{Grid=5x5,NumSquares=17x5,Unit=1,Margin=0,Enlarge=0,Border=false,DispBar=true}%valeurs par défaut

\NewDocumentCommand\DispGrid{ O{} D<>{lightgray!66/lightgray!33/lightgray!50} }{%créer le quadrillage
  \setcounter{lgquadri}{0}%on réinitialise les lignes
  \useKVdefault[Quadril]%on met les clés par défaut
  \setKV[Quadril]{#1}%on lit les clés
  %si une ou deux ou trois couleurs...
  \StrCount{#2}{/}[\tmpnbofcolors]%
  \ifnum\tmpnbofcolors=0\relax%
    \def\QuadCoulA{#2}\def\QuadCoulB{#2}\def\QuadCoulC{#2}%
  \fi%
  \ifnum\tmpnbofcolors=1\relax%
    \StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}%
    \def\QuadCoulC{\QuadCoulB}%
  \fi%
  \ifnum\tmpnbofcolors=2\relax%
    \StrBefore[1]{#2}{/}[\QuadCoulA]%
    \StrBetween[1,2]{#2}{/}{/}[\QuadCoulB]%
    \StrBehind[2]{#2}{/}[\QuadCoulC]%
  \fi%
  %détermination des nb de carreaux, sans unite... ? TEST !!!!!!
  \IfSubStr{\QuadNbCar}{Auto}%
    {%
      \GridCalcAuto[\QuadNbLig][\QuadNbCol]{\QuadType}%
      \IfSubStr{\QuadNbCar}{Auto*}%
        {%
          \StrCount{\QuadNbCar}{*}[\tmpnbetoiles]%
          \xdef\QuadNbLig{\inteval{\QuadNbLig+\tmpnbetoiles}}%
        }%
        {}%
    }%
    {%
      \IfBeginWith{\QuadNbCar}{C}%
        {%
          \GridCalcNbCols[\QuadNbCol]{\QuadType}%
          \StrBehind{\QuadNbCar}{x}[\QuadNbLig]%
        }%
        {%
          \IfEndWith{\QuadNbCar}{L}%
            {%
              \GridCalcNbLignes[\QuadNbLig]{\QuadType}%
              \StrBefore{\QuadNbCar}{x}[\QuadNbCol]%
            }%
            {%
              \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
            }%
        }%
    }%
  %suite des calculs
  \IfStrEq{\QuadType}{Seyes}%les types de quadrillages
    {\xdef\ValeurCarreau{0.8}}%
    {}%
  \IfStrEq{\QuadType}{5x5}%
    {\xdef\ValeurCarreau{0.5}}%
    {}%
  \IfStrEq{\QuadType}{Ruled}%
    {\xdef\ValeurCarreau{0.9}}%
    {}%
  \IfStrEq{\QuadType}{Milli}%
    {\xdef\ValeurCarreau{1}\xdef\CoeffUnite{1}}%
    {}%
  \IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
    {\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
    {\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
  \begin{tikzpicture}[xscale={\useKV[Quadril]{Unit}},yscale={\useKV[Quadril]{Unit}}]
    \useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
    \IfStrEq{\QuadType}{Seyes}%
      {%
        \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \ifboolKV[Quadril]{DispBar}
          {
            \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
          }{}
      }%
      {}%
    \IfStrEq{\QuadType}{5x5}%
      {%
        \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
      }%
      {}%
    \IfStrEq{\QuadType}{Milli}%
      {%
        \draw[xstep=0.1,ystep=0.1,WoGrids,\QuadCoulC] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli s
        \draw[xstep=0.5,ystep=0.5,WoGridi,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli i
        \draw[xstep=1,ystep=1,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli p
      }%
      {}%
    \IfStrEq{\QuadType}{Ruled}%
    {%
      \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
      %\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
      \ifboolKV[Quadril]{DispBar}
          {
            \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
          }{}
    }%
    {}%
    \ifboolKV[Quadril]{Border}%cadre pour la "marge"
      {\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
      {}%
  \end{tikzpicture}%
}%

\NewDocumentEnvironment{EnvGrid}{ O{} D<>{lightgray!66/lightgray!33/lightgray!50} }%créer le quadrillage
{%
  \setcounter{lgquadri}{0}%on réinitialise les lignes
  \useKVdefault[Quadril]%on met les clés par défaut
  \setKV[Quadril]{#1}%on lit les clés
  %si une ou deux ou trois couleurs...
  \StrCount{#2}{/}[\tmpnbofcolors]%
  \ifnum\tmpnbofcolors=0\relax%
    \def\QuadCoulA{#2}\def\QuadCoulB{#2}\def\QuadCoulC{#2}%
  \fi%
  \ifnum\tmpnbofcolors=1\relax%
    \StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}%
    \def\QuadCoulC{\QuadCoulB}%
  \fi%
  \ifnum\tmpnbofcolors=2\relax%
    \StrBefore[1]{#2}{/}[\QuadCoulA]%
    \StrBetween[1,2]{#2}{/}{/}[\QuadCoulB]%
    \StrBehind[2]{#2}{/}[\QuadCoulC]%
  \fi%
  %détermination des nb de carreaux, sans unite... ? TEST !!!!!!
  \IfSubStr{\QuadNbCar}{Auto}%
    {%
      \GridCalcAuto[\QuadNbLig][\QuadNbCol]{\QuadType}%
      \IfSubStr{\QuadNbCar}{Auto*}%
        {%
          \StrCount{\QuadNbCar}{*}[\tmpnbetoiles]%
          \xdef\QuadNbLig{\inteval{\QuadNbLig+\tmpnbetoiles}}%
        }%
        {}%
    }%
    {%
      \IfBeginWith{\QuadNbCar}{C}%
        {%
          \GridCalcNbCols[\QuadNbCol]{\QuadType}%
          \StrBehind{\QuadNbCar}{x}[\QuadNbLig]%
        }%
        {%
          \IfEndWith{\QuadNbCar}{L}%
            {%
              \GridCalcNbLignes[\QuadNbLig]{\QuadType}%
              \StrBefore{\QuadNbCar}{x}[\QuadNbCol]%
            }%
            {%
              \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
            }%
        }%
    }%
  %suite des calculs
  \IfStrEq{\QuadType}{Seyes}%les types de quadrillages
    {\xdef\ValeurCarreau{0.8}}%
    {}%
  \IfStrEq{\QuadType}{5x5}%
    {\xdef\ValeurCarreau{0.5}}%
    {}%
  \IfStrEq{\QuadType}{Ruled}%
    {\xdef\ValeurCarreau{0.9}}%
    {}%
  \IfStrEq{\QuadType}{Milli}%
    {\xdef\ValeurCarreau{1}\xdef\CoeffUnite{1}}%
    {}%
  \IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
    {\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
    {\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
  \begin{tikzpicture}[xscale={\useKV[Quadril]{Unit}},yscale={\useKV[Quadril]{Unit}}]
    \useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
    \IfStrEq{\QuadType}{Seyes}%
      {%
        \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
        \ifboolKV[Quadril]{DispBar}
          {
            \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
          }{}
      }%
      {}%
    \IfStrEq{\QuadType}{5x5}%
      {%
        \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
      }%
      {}%
    \IfStrEq{\QuadType}{Milli}%
      {%
        \draw[xstep=0.1,ystep=0.1,WoGrids,\QuadCoulC] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli s
        \draw[xstep=0.5,ystep=0.5,WoGridi,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli i
        \draw[xstep=1,ystep=1,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille Milli p
      }%
      {}%
    \IfStrEq{\QuadType}{Ruled}%
    {%
      \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
      %\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
      \ifboolKV[Quadril]{DispBar}
          {
            \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
          }{}
    }%
    {}%
    \ifboolKV[Quadril]{Border}%cadre pour la "marge"
      {\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
      {}%
  }%
  {%
  \end{tikzpicture}%
}%

%------page entière seyes
\defKV[SeyesFull]{%
  CouleurP=\def\SeyesFullCoulP{#1},%
  CouleurS=\def\SeyesFullCoulS{#1},%
  CouleurMarge=\def\SeyesFullCoulM{#1},%
  ReglureSeyes=\def\SeyesFullReglureSeyes{#1},%
  FormatPapier=\def\SeyesFullFormatPapier{#1}
}
\setKVdefault[SeyesFull]{%
  CouleurP=PapierRose,%
  CouleurS=PapierGris,%
  CouleurMarge=red!75,
  NumLignes=false,%
  ReglureSeyes=2,%
  FormatPapier=A4
}

\NewDocumentEnvironment{PleinePageSeyes}{ O{} }%semble OK ^^, à tester avec modification de la taille de papier...
{
  \useKVdefault[SeyesFull]%
  \setKV[SeyesFull]{#1}%
  \IfEq{\SeyesFullFormatPapier}{A4}%
    {\xdef\SeyesFullHautPap{29.7}\xdef\SeyesFullLargPap{21}\xdef\SeyesFullMargeH{3}\xdef\SeyesFullMargeG{4}\xdef\SeyesFullHautEff{24}}%
    {}%
  \IfEq{\SeyesFullFormatPapier}{A5}%
    {\xdef\SeyesFullHautPap{21}\xdef\SeyesFullLargPap{14.8}\xdef\SeyesFullMargeH{2.5}\xdef\SeyesFullMargeG{2.5}\xdef\SeyesFullHautEff{17}}%
    {}%
  \IfSubStr{\SeyesFullFormatPapier}{x}%
    {\StrCut{\SeyesFullFormatPapier}{x}{\SeyesFullLargPap}{\SeyesFullHautPap}\xdef\SeyesFullMargeH{3}\xdef\SeyesFullMargeG{3}\xdef\SeyesFullHautEff{\fpeval{\SeyesFullHautPap-6}}}%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\SeyesFullNbLignP{\fpeval{round(\SeyesFullHautEff/(0.4*\SeyesFullReglureSeyes),0)}}%
  \xdef\SeyesFullNbLignS{\fpeval{round(\SeyesFullHautEff/(0.1*\SeyesFullReglureSeyes),0)+5}}%
  \xdef\SeyesFullNbCol{\fpeval{round((\SeyesFullLargPap-\SeyesFullMargeG)/(0.4*\SeyesFullReglureSeyes),0)}}%
  %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille secondaire
    \foreach \L in {0,...,\SeyesFullNbLignS} {\draw[WoGrids,\SeyesFullCoulS] ($(current page.north west)+(0,{-(\SeyesFullMargeH-0.3*\SeyesFullReglureSeyes)-\L*0.1*\SeyesFullReglureSeyes})$)--++({\paperwidth},0) ;}
    %grille principale
    \foreach \C in {1,...,\SeyesFullNbCol} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$)--($(current page.south west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$) ;}
    \foreach \L in {0,...,\SeyesFullNbLignP} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+(0,{-(\SeyesFullMargeH)-\L*(0.4*\SeyesFullReglureSeyes)})$)--++({\paperwidth},0) ;}
    %marge
    \draw[\SeyesFullCoulM,WoGridbar] ($(current page.north west)+({\SeyesFullMargeG},0)$)--($(current page.south west)+({\SeyesFullMargeG},0)$) ;
    \coordinate (SeyesOrigine) at ($(current page.north west)+({\SeyesFullMargeG},{-\SeyesFullMargeH})$) ;
    \ifboolKV[SeyesFull]{NumLignes}%
      {%
        \foreach \lig in {1,...,\inteval{\SeyesFullNbLignP+1}} {\node[gray,inner sep=0pt,anchor=base east] at ($(SeyesOrigine)+(-0.2,{-0.4*\SeyesFullReglureSeyes*(\lig-1)})$) {\scriptsize\sffamily\lig};}
      }%
      {}%
}
{
  \end{tikzpicture}%
}

\NewDocumentCommand\WoGPageSeyes{ O{} }{%semble OK ^^, à tester avec modification de la taille de papier...
  \useKVdefault[SeyesFull]%
  \setKV[SeyesFull]{#1}%
  \IfEq{\SeyesFullFormatPapier}{A4}%
    {\xdef\SeyesFullHautPap{29.7}\xdef\SeyesFullLargPap{21}\xdef\SeyesFullMargeH{3}\xdef\SeyesFullMargeG{4}\xdef\SeyesFullHautEff{24}}%
    {}%
  \IfEq{\SeyesFullFormatPapier}{A5}%
    {\xdef\SeyesFullHautPap{21}\xdef\SeyesFullLargPap{14.8}\xdef\SeyesFullMargeH{2.5}\xdef\SeyesFullMargeG{2.5}\xdef\SeyesFullHautEff{17}}%
    {}%
  \IfSubStr{\SeyesFullFormatPapier}{x}%
    {\StrCut{\SeyesFullFormatPapier}{x}{\SeyesFullLargPap}{\SeyesFullHautPap}\xdef\SeyesFullMargeH{3}\xdef\SeyesFullMargeG{3}\xdef\SeyesFullHautEff{\fpeval{\SeyesFullHautPap-6}}}%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\SeyesFullNbLignP{\fpeval{round(\SeyesFullHautEff/(0.4*\SeyesFullReglureSeyes),0)}}%
  \xdef\SeyesFullNbLignS{\fpeval{round(\SeyesFullHautEff/(0.1*\SeyesFullReglureSeyes),0)+5}}%
  \xdef\SeyesFullNbCol{\fpeval{round((\SeyesFullLargPap-\SeyesFullMargeG)/(0.4*\SeyesFullReglureSeyes),0)}}%
  %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille secondaire
    \foreach \L in {0,...,\SeyesFullNbLignS} {\draw[WoGrids,\SeyesFullCoulS] ($(current page.north west)+(0,{-(\SeyesFullMargeH-0.3*\SeyesFullReglureSeyes)-\L*0.1*\SeyesFullReglureSeyes})$)--++({\paperwidth},0) ;}
    %grille principale
    \foreach \C in {1,...,\SeyesFullNbCol} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$)--($(current page.south west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$) ;}
    \foreach \L in {0,...,\SeyesFullNbLignP} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+(0,{-(\SeyesFullMargeH)-\L*(0.4*\SeyesFullReglureSeyes)})$)--++({\paperwidth},0) ;}
    %marge
    \draw[\SeyesFullCoulM,WoGridbar] ($(current page.north west)+({\SeyesFullMargeG},0)$)--($(current page.south west)+({\SeyesFullMargeG},0)$) ;
    \coordinate (SeyesOrigine) at ($(current page.north west)+({\SeyesFullMargeG},{-\SeyesFullMargeH})$) ;
    \ifboolKV[SeyesFull]{NumLignes}%
      {%
        \foreach \lig in {1,...,\inteval{\SeyesFullNbLignP+1}} {\node[gray,inner sep=0pt,anchor=base east] at ($(SeyesOrigine)+(-0.2,{-0.4*\SeyesFullReglureSeyes*(\lig-1)})$) {\scriptsize\sffamily\lig};}
      }%
      {}%
  \end{tikzpicture}%
}

\newcommand\CadreNoteSeyes[2][3]{%on précise la {ligne de début} + [hauteur]
  %cadre de note
  \draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.4*\SeyesFullReglureSeyes})$) --++ ({\SeyesFullLargPap-\SeyesFullMargeG},{0}) ;
  \draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.4*\SeyesFullReglureSeyes})$) --++ ({0},{-#1*0.4*\SeyesFullReglureSeyes}) ;
  \draw[thick] ($(SeyesOrigine)+(0,{(-#2+1-#1)*0.4*\SeyesFullReglureSeyes})$) --++ ({\SeyesFullLargPap-\SeyesFullMargeG},{0}) ;
  \draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.4*\SeyesFullReglureSeyes})$) rectangle++ ({#1*0.4*\SeyesFullReglureSeyes},{-#1*0.4*\SeyesFullReglureSeyes}) ;
  \draw[thick] ($(SeyesOrigine)+(0,{(-#2+1-#1)*0.4*\SeyesFullReglureSeyes})$) --++ ({#1*0.4*\SeyesFullReglureSeyes},{#1*0.4*\SeyesFullReglureSeyes}) ;
}

\defKV[SeyesLigne]{%
  Couleur=\def\SeyesLigneCouleur{#1},%
  Echelle=\def\SeyesLigneEchelle{#1},%
  Ligne=\def\SeyesLigne{#1},%
  Largeur=\def\SeyesLigneLarg{#1}
}
\setKVdefault[SeyesLigne]{%
  Couleur=black,%
  Ligne=1,%
  Echelle=1,%
  Largeur=auto
}

\NewDocumentCommand\LignePapierSeyes{ O{} D<>{left} D(){0,0} m }{%
  \useKVdefault[SeyesLigne]%
  \setKV[SeyesLigne]{#1}%
  \IfEq{\SeyesLigneLarg}{auto}%
    {\xdef\SeyesLigneLarg{\fpeval{\SeyesFullLargPap-\SeyesFullMargeG-0.25}}}%
    {}%
  \node[\SeyesLigneCouleur,text width=\fpeval{\SeyesLigneLarg/\SeyesLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\SeyesLigneEchelle] at ($(SeyesOrigine)+(0.05,{-(\SeyesLigne-1)*0.4*\SeyesFullReglureSeyes})+(#3)$) {#4} ;
}

\defKV[SeyesPar]{%
  Couleur=\def\SeyesParCouleur{#1},%
  Echelle=\def\SeyesParEchelle{#1},%
  Espacement=\def\SeyesParBase{#1},%
  Ligne=\def\SeyesPar{#1},%
  Largeur=\def\SeyesParLarg{#1}
}
\setKVdefault[SeyesPar]{%
  Couleur=black,%
  Ligne=1,%
  Echelle=1,%
  Espacement=auto,%
  Largeur=auto
}

\RequirePackage{setspace}

\NewDocumentCommand\ParagraphePapierSeyes{ O{} D<>{justify} D(){0,0} m }{%essayer de passer à setspace ?
  \useKVdefault[SeyesPar]%
  \setKV[SeyesPar]{#1}%
  \IfEq{\SeyesParLarg}{auto}%
    {\xdef\SeyesParLarg{\fpeval{\SeyesFullLargPap-\SeyesFullMargeG-0.25}}}%
    {}%
  \IfStrEq{\SeyesParBase}{auto}%
    {%
      \def\SeyesStretchPar{\fpeval{4*\SeyesFullReglureSeyes/\SeyesParEchelle}}%
    }%
    {%
      \def\SeyesStretchPar{\SeyesParBase}%
    }%
  \node[\SeyesParCouleur,text width=\fpeval{\SeyesParLarg/\SeyesParEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\SeyesParEchelle,execute at begin node=\setlength{\baselineskip}{\SeyesStretchPar mm}] at ($(SeyesOrigine)+(0.05,{-(\SeyesPar-1)*0.4*\SeyesFullReglureSeyes})+(#3)$) {#4} ;
}

%------page entière 5x5
%les marges doivent valoir MargeH=0.2+k*0.5 et MargeV=0.3+k'*0.5
\defKV[CxCFull]{%
  Couleur=\def\CCFullCoul{#1},%
  CouleurMarge=\def\CCFullCoulM{#1},%
  FormatPapier=\def\CCFullFormatPap{#1},%
  MargeG=\def\CCFullMargeG{#1},%
  MargeH=\def\CCFullMargeH{#1}
}
\setKVdefault[CxCFull]{%
  Couleur=lightgray!50,%
  CouleurMarge=gray,%
  NumLignes=false,%
  FormatPapier=A4,%
  MargeG=auto,%
  MargeH=auto
}

\NewDocumentEnvironment{PleinePageCinqCinq}{ O{} }%semble OK ^^
{
  \useKVdefault[CxCFull]%
  \setKV[CxCFull]{#1}%
  \IfEq{\CCFullFormatPap}{A4}%
    {%
      \xdef\CCFullHautPap{29.7}\xdef\CCFullLargPap{21}%
      \IfEq{\CCFullMargeG}{auto}%
        {%
          \xdef\CCFullMargeG{1.7}%
        }%
        {}%
      \IfEq{\CCFullMargeH}{auto}%
        {%
          \xdef\CCFullMargeH{1.3}%
        }%
        {}%
    }%
    {}%
  \IfEq{\CCFullFormatPap}{A5}%
    {%
      \xdef\CCFullHautPap{21}\xdef\CCFullLargPap{14.8}%
      \IfEq{\CCFullMargeG}{auto}%
        {%
          \xdef\CCFullMargeG{1.2}%
        }%
        {}%
      \IfEq{\CCFullMargeH}{auto}%
        {%
          \xdef\CCFullMargeH{0.8}%
        }%
        {}%
    }%
    {}%
  \IfSubStr{\CCFullFormatPap}{x}%
    {%
      \StrCut{\CCFullFormatPap}{x}{\CCFullLargPap}{\CCFullHautPap}%
      \IfEq{\CCFullMargeG}{auto}%
        {%
          \xdef\CCFullMargeG{1.7}%
        }%
        {}%
      \IfEq{\CCFullMargeH}{auto}%
        {%
          \xdef\CCFullMargeH{1.3}%
        }%
        {}%
    }%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\CCFullNbLign{\fpeval{round(\CCFullHautPap/(0.5),0)}}%
  \xdef\CCFullNbCol{\fpeval{round((\CCFullLargPap)/(0.5),0)}}%
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
    %lignes horizontales
    \foreach \L in {0,1,...,\CCFullNbLign} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+(0,{-0.3-\L*0.5})$)--++({\paperwidth},0) ;}
    %lignes verticales
    \foreach \C in {0,1,...,\CCFullNbCol} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+({0.2+0.5*\C},0)$)--($(current page.south west)+({0.2+0.5*\C},0)$) ;}
    %marge
    \draw[\CCFullCoulM,WoGridbar] ($(current page.north west)+(\CCFullMargeG,0)$)--($(current page.south west)+(\CCFullMargeG,0)$) ;
    \coordinate (CinqCinqOrigine) at ($(current page.north west)+({\CCFullMargeG},{-\CCFullMargeH})$) ;
    \ifboolKV[CxCFull]{NumLignes}%
    {%
      \foreach \lig in {1,2,...,57} {\node[gray,inner sep=0pt,anchor=base east] at ($(CinqCinqOrigine)+(-0.2,{-0.5*(\lig-1)})$) {\tiny\sffamily \lig};}
    }%
    {}
  }
  {
  \end{tikzpicture}%
}

\newcommand\CadreNoteCinqCinq[2][3]{%on précise la {ligne de début} + [hauteur]
  %cadre de note
  \draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) --++ ({\CCFullLargPap-\CCFullMargeG},{0}) ;
  \draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) --++ ({0},{-#1*0.5}) ;
  \draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1-#1)*0.5})$) --++ ({\CCFullLargPap-\CCFullMargeG},{0}) ;
  \draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) rectangle++ ({#1.*0.5},{-#1*0.5}) ;
  \draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1-#1)*0.5})$) --++ ({#1.*0.5},{#1*0.5}) ;
}

\defKV[CCLigne]{%
  Couleur=\def\CCLigneCouleur{#1},%
  Echelle=\def\CCLigneEchelle{#1},%
  Ligne=\def\CCLigne{#1},%
  Largeur=\def\CCLigneLarg{#1}
}
\setKVdefault[CCLigne]{%
  Couleur=black,%
  Ligne=1,%
  Echelle=1,%
  Largeur=auto
}

\NewDocumentCommand\LignePapierCinqCinq{ O{} D<>{left} D(){0,0} m }{%
  \useKVdefault[CCLigne]%
  \setKV[CCLigne]{#1}%
  \IfEq{\CCLigneLarg}{auto}%
    {\xdef\CCLigneLarg{\fpeval{\CCFullLargPap-\CCFullMargeG-0.25}}}%
    {}%
  \node[\CCLigneCouleur,text width=\fpeval{\CCLigneLarg/\CCLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\CCLigneEchelle] at ($(CinqCinqOrigine)+(0.05,{-(\CCLigne-1)*0.5})+(#3)$) {#4} ;
}

\defKV[CCPar]{%
  Couleur=\def\CCParCouleur{#1},%
  Echelle=\def\CCParEchelle{#1},%
  Espacement=\def\CCParBase{#1},%
  Ligne=\def\CCPar{#1},%
  Largeur=\def\CCParLarg{#1}
}
\setKVdefault[CCPar]{%
  Couleur=black,%
  Ligne=1,%
  Echelle=1,%
  Espacement=auto,%
  Largeur=auto
}

\NewDocumentCommand\ParagraphePapierCinqCinq{ O{} D<>{justify} D(){0,0} m }{%
  \useKVdefault[CCPar]
  \setKV[CCPar]{#1}%
  \IfEq{\CCParLarg}{auto}%
    {\xdef\CCParLarg{\fpeval{\CCFullLargPap-\CCFullMargeG-0.25}}}%
    {}%
  \IfStrEq{\CCParBase}{auto}%
    {%
      \def\CCStretchPar{\fpeval{5/\CCParEchelle}}%
    }%
    {%
      \def\CCStretchPar{\CCParBase}%
    }
  \node[\CCParCouleur,text width=\fpeval{\CCParLarg/\CCParEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\CCParEchelle,execute at begin node=\setlength{\baselineskip}{\CCStretchPar mm}] at ($(CinqCinqOrigine)+(0.05,{-(\CCPar-1)*0.5})+(#3)$) {#4} ;
}

%------page entière ruled
\defKV[RuledFull]{%
  Couleur=\def\RuledFullCoul{#1},%
  CouleurMarge=\def\RuledFullCoulMarge{#1},%
  FormatPapier=\def\RuledFullFormatPapier{#1}
}
\setKVdefault[RuledFull]{%
  Couleur=PapierGris,%
  CouleurMarge=TyrianPurple,%
  NumLignes=false,%
  FormatPapier=A4
}

\NewDocumentEnvironment{PleinePageRuled}{ O{} }%semble OK ^^
{
  \useKVdefault[RuledFull]%
  \setKV[RuledFull]{#1}%
  
  \IfEq{\RuledFullFormatPapier}{A4}%
    {\xdef\RuledFullHautPap{29.7}\xdef\RuledFullLargPap{21}\xdef\RuledFullMarge{3}\xdef\RuledFullMargeH{1.5}\xdef\RuledFullHautEff{26.1}}%
    {}%
  \IfEq{\RuledFullFormatPapier}{A5}%
    {\xdef\RuledFullHautPap{21}\xdef\RuledFullLargPap{14.8}\xdef\RuledFullMarge{1.5}\xdef\RuledFullMargeH{1.25}\xdef\RuledFullHautEff{18.9}}%
    {}%
  \IfSubStr{\RuledFullFormatPapier}{x}%
    {\StrCut{\RuledFullFormatPapier}{x}{\RuledFullLargPap}{\RuledFullHautPap}\xdef\RuledFullMarge{3}\xdef\RuledFullMargeH{3}\xdef\RuledFullHautEff{\fpeval{\RuledFullHautPap-3.5}}}%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\RuledFullNbLign{\fpeval{round(\RuledFullHautEff/(0.9),0)}}%
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
    %lignes horizontales
    \foreach \L in {1,...,\RuledFullNbLign} {\draw[WoGridp,\RuledFullCoul] ($(current page.north west)+(0,{-(\L-1)*0.9-\RuledFullMargeH})$)--++({\paperwidth},0) ;}
    %\foreach \L in {1.5,2.4,...,27.6} {\draw[\RuledFullCoul] ($(current page.north west)+(0,{-\L})$)--++({\paperwidth},0) ;}
    %lignes verticales
    \draw[WoGridbar,\RuledFullCoulMarge] ($(current page.north west)+({\RuledFullMarge},0)$)--($(current page.south west)+({\RuledFullMarge},0)$) ;
    \draw[WoGridbar,\RuledFullCoulMarge] ($(current page.north east)+({-\RuledFullMarge},0)$)--($(current page.south east)+({-\RuledFullMarge},0)$) ;
    %\foreach \C in {3} {\draw[thick,\RuledFullCoulMarge] ($(current page.north west)+({\C},0)$)--($(current page.south west)+({\C},0)$) ;}
    %origine
    \coordinate (RuledOrigine) at ($(current page.north west)+({\RuledFullMarge},{-\RuledFullMargeH})$) ;
    \ifboolKV[RuledFull]{NumLignes}%
    {%
      \foreach \lig in {1,...,\RuledFullNbLign} {\node[gray,inner sep=0pt,anchor=base east] at ($(RuledOrigine)+(-0.2,{-0.9*(\lig-1)})$) {\tiny\sffamily \lig};}
    }%
    {}
  }
  {
  \end{tikzpicture}%
}

\newcommand\CadreNoteRuled[2][3]{%on précise la {ligne de début} + [hauteur]
  %cadre de note
  \draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) --++ ({\RuledFullLargPap-2*\RuledFullMarge},{0}) ;
  \draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) --++ ({0},{-#1*0.9}) ;
  \draw[thick] ($(RuledOrigine)+({\paperwidth-6},{(-#2+1)*0.9})$) --++ ({0},{-#1*0.9}) ;
  \draw[thick] ($(RuledOrigine)+(0,{(-#2+1-#1)*0.9})$) --++ ({\RuledFullLargPap-2*\RuledFullMarge},{0}) ;
  \draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) rectangle++ ({#1.*0.9},{-#1*0.9}) ;
  \draw[thick] ($(RuledOrigine)+(0,{(-#2+1-#1)*0.9})$) --++ ({#1.*0.9},{#1*0.9}) ;
}

\defKV[RuledLigne]{%
  Couleur=\def\RuledLigneCouleur{#1},%
  Echelle=\def\RuledLigneEchelle{#1},%
  Ligne=\def\RuledLigne{#1},%
  Largeur=\def\RuledLigneLarg{#1}
}
\setKVdefault[RuledLigne]{%
  Couleur=black,%
  Ligne=1,%
  Echelle=1,%
  Largeur=auto
}

\NewDocumentCommand\LignePapierRuled{ O{} D<>{left} D(){0,0} m }{%
  \useKVdefault[RuledLigne]%
  \setKV[RuledLigne]{#1}%
  \IfEq{\RuledLigneLarg}{auto}%
    {\xdef\RuledLigneLarg{\fpeval{\RuledFullLargPap-2*\RuledFullMarge-0.25}}}%
    {}%
  \node[\RuledLigneCouleur,text width=\fpeval{\RuledLigneLarg/\RuledLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\RuledLigneEchelle] at ($(RuledOrigine)+(0.05,{-(\RuledLigne-1)*0.9})+(#3)$) {#4} ;
}

\defKV[RuledPar]{%
  Couleur=\def\RuledParCouleur{#1},%
  Echelle=\def\RuledParEchelle{#1},%
  %TaillePolice=\def\RuledParEchelle{#1},%
  Espacement=\def\RuledParBase{#1},%
  Ligne=\def\RuledPar{#1},%
  Largeur=\def\RuledParLarg{#1}
}
\setKVdefault[RuledPar]{%
  Couleur=black,%
  Ligne=1,%
  %TaillePolice=11,%
  Echelle=1,%
  Espacement=auto,%
  Largeur=auto
}

\NewDocumentCommand\ParagraphePapierRuled{ O{} D<>{justify} D(){0,0} m }{%
  \useKVdefault[RuledPar]%
  \setKV[RuledPar]{#1}%
  \IfEq{\RuledParLarg}{auto}%
    {\xdef\RuledParLarg{\fpeval{\RuledFullLargPap-2*\RuledFullMarge-0.25}}}%
    {}%
  \IfStrEq{\RuledParBase}{auto}%
    {%
      \def\RuledStretchPar{\fpeval{9/\RuledParEchelle}}%
    }%
    {%
      \def\RuledStretchPar{\RuledParBase}%
    }
  \node[\RuledParCouleur,text width=\fpeval{\RuledParLarg/\RuledParEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\RuledParEchelle,execute at begin node=\setlength{\baselineskip}{\RuledStretchPar mm}] at ($(RuledOrigine)+(0.05,{-(\RuledPar-1)*0.9})+(#3)$) {#4} ;
}

%------page entière Milli
\defKV[MilliFull]{%
  CouleurP=\def\MilliFullCoulP{#1},%
  CouleurS=\def\MilliFullCoulS{#1},%
  CouleurI=\def\MilliFullCoulI{#1},%
  FormatPapier=\def\MilliFullFormatPapier{#1},%
  Theme=\def\MilliFullTheme{#1},%
}
\setKVdefault[MilliFull]{%
  CouleurP=PapierMilliDefautFonce,%
  CouleurS=PapierMilliDefautClair,%
  CouleurI=PapierMilliDefautInter,
  NumLignes=false,%
  FormatPapier=A4,%
  Theme={}
}

\NewDocumentEnvironment{PleinePageMilli}{ O{} }%semble OK ^^, à tester avec modification de la taille de papier... version simplifiée
{
  \useKVdefault[MilliFull]%
  \setKV[MilliFull]{#1}%
  \IfEq{\MilliFullTheme}{defaut}%
    {%
      \def\MilliFullCoulP{PapierMilliDefautFonce}\def\MilliFullCoulI{PapierMilliDefautInter}\def\MilliFullCoulS{PapierMilliDefautClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{gris}%
    {%
      \def\MilliFullCoulP{PapierMilliGrisFonce}\def\MilliFullCoulI{PapierMilliGrisInter}\def\MilliFullCoulS{PapierMilliGrisClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{bleu}%
    {%
      \def\MilliFullCoulP{PapierMilliBleuFonce}\def\MilliFullCoulI{PapierMilliBleuInter}\def\MilliFullCoulS{PapierMilliBleuClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{chaud}%
    {%
      \def\MilliFullCoulP{PapierMilliChaudFonce}\def\MilliFullCoulI{PapierMilliChaudInter}\def\MilliFullCoulS{PapierMilliChaudClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{vert}%
    {%
      \def\MilliFullCoulP{PapierMilliVertFonce}\def\MilliFullCoulI{PapierMilliVertInter}\def\MilliFullCoulS{PapierMilliVertClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{contraste}%
    {%
      \def\MilliFullCoulP{PapierMilliContrasteFonce}\def\MilliFullCoulI{PapierMilliContrasteInter}\def\MilliFullCoulS{PapierMilliContrasteClair}%
    }%
    {}%
  % %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille secondaire
    \draw[WoGrids,\MilliFullCoulS,xstep=0.1,ystep=0.1] (current page.north west) grid (current page.south east) ;
    \draw[WoGridi,\MilliFullCoulI,xstep=0.5,ystep=0.5] (current page.north west) grid (current page.south east) ;
    \draw[WoGridp,\MilliFullCoulP,xstep=1,ystep=1] (current page.north west) grid (current page.south east) ;
  }
  {
  \end{tikzpicture}%
}

\NewDocumentCommand\WoGPageMilli{ O{} }{%semble OK ^^, à tester avec modification de la taille de papier... version simplifiée
  \useKVdefault[MilliFull]%
  \setKV[MilliFull]{#1}%
  \IfEq{\MilliFullTheme}{defaut}%
    {%
      \def\MilliFullCoulP{PapierMilliDefautFonce}\def\MilliFullCoulI{PapierMilliDefautInter}\def\MilliFullCoulS{PapierMilliDefautClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{gris}%
    {%
      \def\MilliFullCoulP{PapierMilliGrisFonce}\def\MilliFullCoulI{PapierMilliGrisInter}\def\MilliFullCoulS{PapierMilliGrisClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{bleu}%
    {%
      \def\MilliFullCoulP{PapierMilliBleuFonce}\def\MilliFullCoulI{PapierMilliBleuInter}\def\MilliFullCoulS{PapierMilliBleuClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{chaud}%
    {%
      \def\MilliFullCoulP{PapierMilliChaudFonce}\def\MilliFullCoulI{PapierMilliChaudInter}\def\MilliFullCoulS{PapierMilliChaudClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{vert}%
    {%
      \def\MilliFullCoulP{PapierMilliVertFonce}\def\MilliFullCoulI{PapierMilliVertInter}\def\MilliFullCoulS{PapierMilliVertClair}%
    }%
    {}%
  \IfEq{\MilliFullTheme}{contraste}%
    {%
      \def\MilliFullCoulP{PapierMilliContrasteFonce}\def\MilliFullCoulI{PapierMilliContrasteInter}\def\MilliFullCoulS{PapierMilliContrasteClair}%
    }%
    {}%
  % %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille secondaire
    \draw[WoGrids,\MilliFullCoulS,xstep=0.1,ystep=0.1] (current page.north west) grid (current page.south east) ;
    \draw[WoGridi,\MilliFullCoulI,xstep=0.5,ystep=0.5] (current page.north west) grid (current page.south east) ;
    \draw[WoGridp,\MilliFullCoulP,xstep=1,ystep=1] (current page.north west) grid (current page.south east) ;
  \end{tikzpicture}%
}

%------page entière 5x5 avec marge (comme seyes)
\defKV[CxCFullMarge]{%
  Couleur=\def\CCFullCoul{#1},%
  CouleurMarge=\def\CCFullCoulM{#1},%
  FormatPapier=\def\CCFullFormatPap{#1},%
  MargeG=\def\CCFullMargeG{#1},%
  MargeH=\def\CCFullMargeH{#1}
}
\setKVdefault[CxCFullMarge]{%
  Couleur=gray!60,%
  CouleurMarge=red!90!black,%
  NumLignes=false,%
  FormatPapier=A4,%
  MargeG=auto,%
  MargeH=auto
}

\NewDocumentEnvironment{PleinePageCinqCinqMarge}{ O{} }%semble OK ^^
{
  \useKVdefault[CxCFullMarge]%
  \setKV[CxCFullMarge]{#1}%
  \IfEq{\CCFullFormatPap}{A4}%
    {\xdef\CCFullHautPap{29.7}\xdef\CCFullLargPap{21}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{2}\xdef\CCFullHautEff{26.5}}%
    {}%
  \IfEq{\CCFullFormatPap}{A5}%
    {\xdef\CCFullHautPap{21}\xdef\CCFullLargPap{14.8}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{1.5}\xdef\CCFullHautEff{18}}%
    {}%
  \IfSubStr{\CCFullFormatPap}{x}%
    {\StrCut{\CCFullFormatPap}{x}{\CCFullLargPap}{\CCFullHautPap}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{2}\xdef\CCFullHautEff{\fpeval{\CCFullHautPap-3}}}%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\CCFullNbLign{\fpeval{round(\CCFullHautEff/0.5,0)}}%
  \xdef\CCFullNbCol{\fpeval{round((\CCFullLargPap-\CCFullMargeG)/(0.5),0)}}%
  %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille principale
    \foreach \C in {1,...,\CCFullNbCol} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+({\CCFullMargeG+(0.5)*\C},0)$)--($(current page.south west)+({\CCFullMargeG+(0.5)*\C},0)$) ;}
    \foreach \L in {0,...,\CCFullNbLign} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+(0,{-(\CCFullMargeH)-\L*(0.5)})$)--++({\paperwidth},0) ;}
    %marge
    \draw[\CCFullCoulM,WoGridbar] ($(current page.north west)+({\CCFullMargeG},0)$)--($(current page.south west)+({\CCFullMargeG},0)$) ;
    \coordinate (CCmargeOrigine) at ($(current page.north west)+({\CCFullMargeG},{-\CCFullMargeH})$) ;
    \ifboolKV[CxCFullMarge]{NumLignes}%
    {%
      \foreach \lig in {1,...,\inteval{\CCFullNbLign+1}} {\node[gray,inner sep=0pt,anchor=base east,font=\scriptsize\sffamily] at ($(CCmargeOrigine)+(-0.2,{-0.5*(\lig-1)})$) {\lig};}
    }%
    {}%
}
{
  \end{tikzpicture}%
}

\NewDocumentCommand\WoGPageCinqCinqMarge{ O{} }{%
  \useKVdefault[CxCFullMarge]%
  \setKV[CxCFullMarge]{#1}%
  \IfEq{\CCFullFormatPap}{A4}%
    {\xdef\CCFullHautPap{29.7}\xdef\CCFullLargPap{21}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{2}\xdef\CCFullHautEff{26.5}}%
    {}%
  \IfEq{\CCFullFormatPap}{A5}%
    {\xdef\CCFullHautPap{21}\xdef\CCFullLargPap{14.8}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{1.5}\xdef\CCFullHautEff{18}}%
    {}%
  \IfSubStr{\CCFullFormatPap}{x}%
    {\StrCut{\CCFullFormatPap}{x}{\CCFullLargPap}{\CCFullHautPap}\xdef\CCFullMargeH{1.5}\xdef\CCFullMargeG{2}\xdef\CCFullHautEff{\fpeval{\CCFullHautPap-3}}}%
    {}%
  %calcul du nombre de lignes /colonnes ?
  \xdef\CCFullNbLign{\fpeval{round(\CCFullHautEff/0.5,0)}}%
  \xdef\CCFullNbCol{\fpeval{round((\CCFullLargPap-\CCFullMargeG)/(0.5),0)}}%
  %création de la grille
  \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
    %grille principale
    \foreach \C in {1,...,\CCFullNbCol} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+({\CCFullMargeG+(0.5)*\C},0)$)--($(current page.south west)+({\CCFullMargeG+(0.5)*\C},0)$) ;}
    \foreach \L in {0,...,\CCFullNbLign} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+(0,{-(\CCFullMargeH)-\L*(0.5)})$)--++({\paperwidth},0) ;}
    %marge
    \draw[\CCFullCoulM,WoGridbar] ($(current page.north west)+({\CCFullMargeG},0)$)--($(current page.south west)+({\CCFullMargeG},0)$) ;
    \coordinate (CCmargeOrigine) at ($(current page.north west)+({\CCFullMargeG},{-\CCFullMargeH})$) ;
    \ifboolKV[CxCFullMarge]{NumLignes}%
    {%
      \foreach \lig in {1,...,\inteval{\CCFullNbLign+1}} {\node[gray,inner sep=0pt,anchor=base east,font=\scriptsize\sffamily] at ($(CCmargeOrigine)+(-0.2,{-0.5*(\lig-1)})$) {\lig};}
    }%
    {}%
  \end{tikzpicture}%
}

%====wrapper
\NewDocumentCommand\WoGPage{ O{} m }{%
  \IfStrEqCase{#2}{%
    {5x5}{\WoGPageCinqCinqMarge[#1]}%
    {Seyes}{\WoGPageSeyes[#1]}%
    {Milli}{\WoGPageMilli[#1]}%
  }%
  [%
    {\WoGPageSeyes[#1]}%
  ]%
}


\endinput