Instead of relying on the \algsave-\algrestore method of breaking an algorithm, we can break it using the "page-breaking algorithm" via \vsplit. Quoting from TeX by Topic (section 27.5 \vsplit, p 230):
The page-breaking operation is available to the user through the \vsplit operation.
\setbox1 = \vsplit2 to \dimen3
assigns to box 1 the top part of size \dimen3 of box 2. This material
is actually removed from box 2.
We set the algorithm outside the algorithm float in \algbox (a box register) and then split it into \algboxtop (which contains the top 10 baselines) and the remainder in \algbox (whatever is left).
Additionally, in order to allow for a "continued" caption, we can use \caption* (provided by caption) together with some cross-referencing.

\documentclass{article}
\usepackage{algorithm,algpseudocode,caption}
\makeatletter
\renewcommand{\ALG@name}{Algorithme}% Algorithm in French
\newcommand{\algorithmname}{\ALG@name}
\algnewcommand{\Debut}{\Statex \textbf{D\'ebut}\pushindent}
\algnewcommand{\Fin}{\Statex \textbf{Fin}\popindent}
% This is the vertical rule that is inserted
\def\therule{\makebox[\algorithmicindent][l]{\hspace*{.5em}\vrule height .75\baselineskip depth .25\baselineskip}}%
\newtoks\therules% Contains rules
\therules={}% Start with empty token list
\def\appendto#1#2{\expandafter#1\expandafter{\the#1#2}}% Append to token list
\def\gobblefirst#1{% Remove (first) from token list
#1\expandafter\expandafter\expandafter{\expandafter\@gobble\the#1}}%
\def\LState{\State\unskip\the\therules}% New line-state
\def\pushindent{\appendto\therules\therule}%
\def\popindent{\gobblefirst\therules}%
\def\printindent{\unskip\the\therules}%
\def\printandpush{\printindent\pushindent}%
\def\popandprint{\popindent\printindent}%
% *** DECLARED LOOPS ***
% (from algpseudocode.sty)
\algdef{SE}[WHILE]{While}{EndWhile}[1]
{\printandpush\textbf{Tant que} #1}
{\popandprint\textbf{Fin Tant que}}%
\algdef{SE}[FOR]{For}{EndFor}[1]
{\printandpush\algorithmicfor\ #1\ \algorithmicdo}
{\popandprint\algorithmicend\ \algorithmicfor}%
\algdef{S}[FOR]{ForAll}[1]
{\printindent\algorithmicforall\ #1\ \algorithmicdo}%
\algdef{SE}[LOOP]{Loop}{EndLoop}
{\printandpush\algorithmicloop}
{\popandprint\algorithmicend\ \algorithmicloop}%
\algdef{SE}[REPEAT]{Repeat}{Until}
{\printandpush\algorithmicrepeat}[1]
{\popandprint\algorithmicuntil\ #1}%
\algdef{SE}[IF]{If}{EndIf}[1]
{\printandpush\algorithmicif\ #1\ \algorithmicthen}
{\popandprint\algorithmicend\ \algorithmicif}%
\algdef{C}[IF]{IF}{ElsIf}[1]
{\popandprint\pushindent\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}%
\algdef{Ce}[ELSE]{IF}{Else}{EndIf}
{\popandprint\pushindent\algorithmicelse}%
\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}[2]
{\printandpush\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%
{\popandprint\algorithmicend\ \algorithmicprocedure}%
\algdef{SE}[FUNCTION]{Function}{EndFunction}[2]
{\printandpush\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%
{\popandprint\algorithmicend\ \algorithmicfunction}%
\newcommand{\Donnees}{\State \textbf{Input}}
\makeatother
\newsavebox{\algbox}
\newsavebox{\algboxtop}
%\newsavebox{\algboxbottom}
\begin{document}
\setbox\algbox=\vbox{%
\begin{algorithmic}[1]
\Donnees\strut: My data
\Statex% Blank line
\Debut
\LState $r \gets a \bmod b$
\While{$r \neq 0$}\Comment{We have the answer if~$r$ is~$0$}
\LState $a \gets b$
\LState $b \gets r$
\LState $r \gets a \bmod b$
\If {condition}
\LState instruction
\EndIf
\EndWhile\label{euclidendwhile}
\LState \textbf{Retour} $b$\Comment{The gcd is $b$}
\Fin\strut
\end{algorithmic}
}
% Break algorithm into 2 parts: Top in \algoboxtop, bottom in \algbox
\global\setbox\algboxtop = \vsplit\algbox to 10\baselineskip%
\begin{algorithm}[H]
\caption{My algorithme}\label{alg:first}
% Capture entire algorithm inside \algbox (a \vbox)
\usebox{\algboxtop}% Set top box
\end{algorithm}
\begin{algorithm}[H]
% http://tex.stackexchange.com/a/33076/5764
\caption*{\textbf{\algorithmname~\ref{alg:first}}\ My algorithme (continued)}
\usebox{\algbox}
\end{algorithm}
\end{document}