diff --git a/slides/cours_22.md b/slides/cours_22.md
index d7ec0de38149b933b02c510c4320bf89909cdb65..a062ecac8a6b6b61f3642062d670ce41c9385161 100644
--- a/slides/cours_22.md
+++ b/slides/cours_22.md
@@ -98,10 +98,24 @@ patat:
 . . .
 
 * Si `n` plus petit que la 1e clé ou plus grand que la dernière descendre.
-* Sinon parcourir séquentiellement jusqu'à trouver ou descendre entre 2 éléments.
+* Sinon parcourir (par bissection ou séquentiellement) jusqu'à trouver ou descendre entre 2 éléments.
 
 # Les B-arbres
 
+## La recherche de la clé `C` algorithme 
+
+0. En partant de la racine.
+1. Si on est dans une feuille:
+    * Si la `C` est dans une page, retourner la page;
+    * Sinon c'est perdu.
+2. Sinon:
+    * Tant que `C > page` passer à la page suivante
+    * Descendre
+
+# Les B-arbres
+
+## Disclaimer
+
 * Inspiration de <https://en.wikipedia.org/wiki/B-tree>
 
 ## Exemples d'insertion: `1`
@@ -116,7 +130,7 @@ patat:
 
 ## Exemples d'insertion: `2`
 
-![B-arbre d'ordre 1, nb pages = 2.](figs/barbres_2.svg)
+![B-arbre d'ordre 1. Nombre pages max = 2.](figs/barbres_2.svg)
  
 . . .
 
@@ -126,7 +140,7 @@ patat:
 
 ## Exemples d'insertion: `3`
 
-![B-arbre d'ordre 1, nb de pages max = 2.](figs/barbres_2.svg){width=50%}
+![B-arbre d'ordre 1.](figs/barbres_2.svg){width=50%}
 
 * Comment on insère (1min de réflexion avant de donner une réponse!)?
 
@@ -134,7 +148,7 @@ patat:
 
 ## Exemples d'insertion: `3`
 
-![B-arbre d'ordre 1, nb de pages max = 2.](figs/barbres_3.svg){width=50%}
+![B-arbre d'ordre 1. Nombre pages max = 2.](figs/barbres_3.svg){width=50%}
  
 . . .
 
@@ -154,7 +168,7 @@ patat:
 
 ## Exemples d'insertion: `4`
 
-![B-arbre d'ordre 1.](figs/barbres_4.svg){width=50%}
+![B-arbre d'ordre 1. Nombre enfants 0 ou 2.](figs/barbres_4.svg){width=50%}
  
 . . .
 
@@ -227,6 +241,58 @@ patat:
 
 # Les B-arbres
 
+## L'algorithme d'insertion
+
+0. Rechercher la feuille (la page a aucun enfant) où insérer;
+1. Si la page n'est pas pleine insérer dans l'ordre croissant.
+2. Si la page est pleine, on sépare la page en son milieu :
+    1. On trouve la médiane, `M`, de la page;
+    2. On met les éléments `< M` dans la page de gauche de `M` et les `> M` dans la page de droite de `M`;
+    3. `M` est insérée récursivement dans la page parent.
+
+# Les B-arbres
+
+## Exercice: insérer `22` dans l'arbre d'ordre 2 (3min matrix)
+
+![](figs/barbres_ex1.png)
+
+. . .
+
+![](figs/barbres_ex2.png)
+
+
+# Les B-arbres
+
+## Exercice: insérer `5, 45, 50` dans l'arbre d'ordre 2 (3min matrix)
+
+![](figs/barbres_ex2.png)
+
+. . .
+
+![](figs/barbres_ex3.png)
+
+# Les B-arbres
+
+## Exercice: insérer `32, 55, 60` dans l'arbre d'ordre 2 (3min matrix)
+
+![](figs/barbres_ex3.png)
+
+. . .
+
+![](figs/barbres_ex4.png)
+
+# Les B-arbres
+
+## Exercice: insérer `41` dans l'arbre d'ordre 2 (3min matrix)
+
+![](figs/barbres_ex4.png)
+
+. . .
+
+![](figs/barbres_ex5.png)
+
+# Les B-arbres
+
 ## Structure de données
 
 * Chaque page a une contrainte de remplissage, par rapport à l'ordre de l'arbre;
@@ -238,15 +304,28 @@ P_0 | K_1 | P_1 | K_2 |  | P_i | K_{i+1} |  | P_{m-1} | K_m | P_m
 
 * `P_0`, ..., `P_m` pointeurs vers enfants;
 * `K_1`, ..., `K_m` les clés.
+* Il y a `m+1` pointeurs mais `m` clés.
+* Comment faire pour gérer l'insertion?
 
-## Pseudo-code structure de données?
+# Les B-arbres
+
+## Faire un dessin de la structure de données (3min matrix)?
+
+. . .
+
+![Strcture d'une page de B-arbre d'ordre 2.](figs/barbres_struct.png)
+
+
+# Les B-arbres
+
+## Pseudo-code structure de données (3min, matrix)?
 
 . . .
 
 ```C
 struct page
     int ordre, nb
-    element tab[]
+    element tab[2*ordre + 2]
 ```
 
 ```C
@@ -255,6 +334,10 @@ struct element
     page pg
 ```
 
+# Les B-arbres
+
+
+
 # Les B-arbres
 
 ## Structure de données en C (3min, matrix)
diff --git a/slides/figs/barbres_ex1.png b/slides/figs/barbres_ex1.png
new file mode 100644
index 0000000000000000000000000000000000000000..accf156bb720bd1d07d7a3b9fdae5e4e31215835
Binary files /dev/null and b/slides/figs/barbres_ex1.png differ
diff --git a/slides/figs/barbres_ex2.png b/slides/figs/barbres_ex2.png
new file mode 100644
index 0000000000000000000000000000000000000000..a30bc0622ea1b8fe1335eff7de646abfc2f829d6
Binary files /dev/null and b/slides/figs/barbres_ex2.png differ
diff --git a/slides/figs/barbres_ex3.png b/slides/figs/barbres_ex3.png
new file mode 100644
index 0000000000000000000000000000000000000000..40ab87cb279bd6ef6fb8b806d42c1cadbe4084bf
Binary files /dev/null and b/slides/figs/barbres_ex3.png differ
diff --git a/slides/figs/barbres_ex4.png b/slides/figs/barbres_ex4.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2346e29a509ef9756b3dcd613c1fdc9e3f12aca
Binary files /dev/null and b/slides/figs/barbres_ex4.png differ
diff --git a/slides/figs/barbres_ex5.png b/slides/figs/barbres_ex5.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a23e8d8d80dd615016819dfe09bd389d50ea9d0
Binary files /dev/null and b/slides/figs/barbres_ex5.png differ