diff --git a/Shiny/TP.Rmd b/Shiny/TP.Rmd
index 6e0e18c60558c8393fb261bb9ab37f8171e445af..6fc7703bd1c15e1e541a397a746e38088da5bc39 100644
--- a/Shiny/TP.Rmd
+++ b/Shiny/TP.Rmd
@@ -20,9 +20,9 @@ output:
 
 # Shiny, c'est parti !
 
-* Créer une application shiny avec RStudio `File` > `New File` > `Shiny Web App`
+* Créer une application shiny avec RStudio `File` > `New File` > `Shiny Web App`.
 
-* Donner un nom à votre première appli et enregistrer la dans le dossier de votre choix avec le choix "Single File"
+* Donner un nom à votre première application et enregistrer la dans le dossier de votre choix avec le choix "Single File".
 
 * Parcourir et exécuter le code :
 
@@ -103,61 +103,61 @@ shinyApp(ui = ui, server = server)
 # Plusieurs onglets
 
 * Ajouter des onglets dans le `mainPanel()` avec l'aide de la fonction `tabsetPanel()`
-  * Le premier onglet : un histogramme
-  * Le second onglet : un boxplot
-  * Le troisième onglet : un tableau des données
+  * le premier onglet : un histogramme
+  * le second onglet : un boxplot
+  * le troisième onglet : un tableau des données
 
 > [app5.R](correction/app5.R)
 
 # Un peu d'aléatoire
 
-* Actuellement notre plot affiche les données des durées entre deux éruptions du geyser *Old Faithful*.
-* Remplacer les données par un tirage aléatoire de 10 valeurs `x <- rnorm(10)`
-* Que se passe-t-il lorsque l'on change la couleur du plot ? Est ce que les différents onglets représentes les mêmes données ? Que proposez vous pour résoudre cela ?
+* Actuellement, notre plot affiche les données des durées entre deux éruptions du geyser *Old Faithful*.
+* Remplacer les données par un tirage aléatoire de 10 valeurs `x <- rnorm(10)`.
+* Que se passe-t-il lorsque l'on change la couleur du plot ? Est-ce que les différents onglets représentent les mêmes données ? Que proposez-vous pour résoudre cela ?
 
 
 
 # De nouvelles données
 
 * Actuellement, les données sont directement gérées au sein de la fonction du plot.
-* On va chercher a séparer le côté données, du côté figures.
-* Supprimer la ligne correspondante (`x    <- faithful[, 2]`) de la fonction et la remplacer par un appel à l'expression réactive `datasetInput()` (`x    <- datasetInput()`) qui permettra de gérer les données de manière dynamique et réactive. Avant le `renderPlot` on définit l'expression reactive *datasetInput* tel que :
+* On va chercher à séparer le côté "données", du côté "figures".
+* Supprimer la ligne correspondante (`x    <- faithful[, 2]`) de la fonction et la remplacer par un appel à l'expression réactive `datasetInput()` (`x    <- datasetInput()`) qui permettra de gérer les données de manière dynamique et réactive. Avant le `renderPlot`, on définit l'expression réactive *datasetInput* tel que :
 
 ```R
 datasetInput <- reactive({faithful$waiting})
 ```
 
-* Tester l'application, verifier que tout fonctionne toujours. Essayer de comprendre et d'assimiler l'articulation des différents éléments.
+* Tester l'application et vérifier que tout fonctionne toujours. Essayer de comprendre et d'assimiler l'articulation des différents éléments.
 > [app6.R](correction/app6.R)
 
-* Maintenant que tout est bon, avec une liste déroulante, proposer le choix entre la durée des éruptions du geyser *Old Faithful* (`faithful$waiting`), la longueur des sépales des iris de *Fisher* (`iris$Sepal.Length`) ou la puissance des voitures d'après *Motor Trend* (`mtcars$hp`) et mettre à jour `datasetInput()` en fonction de ce choix.
-  * **Note** : On peut utiliser un enchainement de `else if` ou bien la fonction `switch`
+* Maintenant que tout est fonctionnel, à l'aide d'une liste déroulante, proposer le choix entre la durée des éruptions du geyser *Old Faithful* (`faithful$waiting`), la longueur des sépales des iris de *Fisher* (`iris$Sepal.Length`) ou la puissance des voitures d'après *Motor Trend* (`mtcars$hp`). Mettre mettre à jour `datasetInput()` en fonction de ce choix.
+  * **Note** : on peut utiliser un enchainement de `else if` ou bien la fonction `switch`.
 
 > [app7.R](correction/app7.R)
 
 # Des données générées aléatoirement
 
 * Ajouter un choix dans la liste correspondant à un tirage aléatoire de 100 valeurs distribuées normalement.
-  * Ajouter un champ dédié dans la liste déroulante
-  * Mettre à jour les données pour renvoyer `rnorm(100)` si  *random* est sélectionné dans le champ *data*.
-* **Note** : Le `reactive()` ne dépend pas des inputs du choix de couleur ou du nombre de *bins*. Le tirage aléatoire ne change donc pas lorsque la couleur ou les *bins* sont modifiés. 
+  * ajouter un champ dédié dans la liste déroulante
+  * mettre à jour les données afin de renvoyer `rnorm(100)` si  *random* est sélectionné dans le champ *data*.
+* **Note** : le `reactive()` ne dépend pas des inputs du choix de couleur ou du nombre de *bins*. Le tirage aléatoire ne change donc pas lorsque la couleur ou les *bins* sont modifiés. 
 
 > [app8.R](correction/app8.R)
 
 # Paramètres du tirage aléatoire
 
 * Dans la barre de paramètres, ajouter une section dédiée aux paramètres du tirage (`n`, `mean`, `sd`).
-* **Bonus** : Afficher ces paramètres uniquement lorsque l'on sélectionne les données aléatoires dans la liste déroulante (voir `conditionalPanel`, attention à la syntaxe).
+* **Bonus** : afficher ces paramètres uniquement lorsque l'on sélectionne les données aléatoires dans la liste déroulante (voir `conditionalPanel`, attention à la syntaxe).
 
 > [app9.R](correction/app9.R)
 
-# Upload de données
+# Téléchargement de données
 
-* Permettre à l'utilisateur de charger ses données au format csv.
-  * Ajouter un champ dédié dans la liste déroulante
-  * Ajouter un widget d'upload
-  * **Aide R** : Utiliser la fonction `read.csv(file, header = FALSE)[,1]` pour extraire la première colonne.
-  * **Bonus** : Anticiper l'erreur du fichier non sélectionné avec les fonctions `validate()` et `need()` anisi que l'opérateur booléen OR `||`
+* Permettre à l'utilisateur de charger ses données au format CSV.
+  * ajouter un champ dédié dans la liste déroulante
+  * ajouter un widget d'upload
+  * **Aide R** : utiliser la fonction `read.csv(file, header = FALSE)[,1]` pour extraire la première colonne.
+  * **Bonus** : anticiper l'erreur du fichier non sélectionné avec les fonctions `validate()` et `need()` anisi que l'opérateur booléen OR `||`
 
 > [app10.R](correction/app10.R)  
 > [app10bonus.R](correction/app10bonus.R)
@@ -165,9 +165,9 @@ datasetInput <- reactive({faithful$waiting})
 # Des data.frames et `ggplot2` pour des graphiques élégants
 
 * `ggplot2` comme de nombreux autres packages R utilise les dataframes. On va donc exploiter nos données avec ce format.
-  * Pour les données de démo `faithful`, `iris` et `mtcars`, ce sont des dataframes
-  * Pour les données chargées par l'utilisateur, il s'agit d'un dataframe avant que l'on extrait la première colonne
-  * Pour les données générées aléatoirement on va construire sous le format data.frame
+  * pour les données de démo `faithful`, `iris` et `mtcars`, ce sont des dataframes
+  * pour les données chargées par l'utilisateur, il s'agit d'un dataframe avant que l'on extrait la première colonne
+  * pour les données générées aléatoirement on va construire sous le format data.frame
 * Remplacer le reactive `datasetInput` par :
 
 ```R
@@ -181,9 +181,9 @@ datasetInput <- reactive({
 })
 ```
 
-* Ajouter un widget `varSelectInput` destiné à sélectionner une variable.
-  * Pour que ce widget se mette à jour en fonction des données choisies, il est nécessaire de le placer côté server.
-  * Pour l'afficher coté UI, on utilisera `uiOutput` qui renverra vers le `renderUI` associé où sera placé le widget.
+* Ajouter un widget `varSelectInput` destiné à sélectionner une variable
+  * pour que ce widget se mette à jour en fonction des données choisies, il est nécessaire de le placer côté "server".
+  * pour l'afficher coté UI, on utilisera `uiOutput` qui renverra vers le `renderUI` associé où sera placé le widget.
 * Remplacer l'histogramme et le boxplot par l'équivalent en ggplot2. Le sujet du TP n'étant pas spécialement l'utilisation de `ggplot2`, voici directement les fonctions. Si vous êtes à l'aise, laissez libre cours à votre imagination pour les personnaliser.
   * Histogramme : `ggplot(data = datasetInput(), aes_string(x = input$variable)) + geom_histogram(bins = input$bins, fill = input$color, color = "white")`
   * Boxplot : `ggplot(data = datasetInput(), aes_string(y = input$variable)) + geom_boxplot(fill = input$color)`
@@ -194,7 +194,7 @@ datasetInput <- reactive({
 
 * Ajouter un bouton pour télécharger le plot grâce aux fonctions `downloadHandler` et `ggsave`.
 
-**Note** : Pour que le téléchargement se lance correctement, lancer l'application dans un vrai browser. Utiliser la commande : 
+**Note** : pour que le téléchargement se lance correctement, lancer l'application dans un "vrai" navigateur. Utiliser la commande : 
 
 ```r
 runApp('app11.R', launch.browser = TRUE) 
@@ -206,18 +206,18 @@ runApp('app11.R', launch.browser = TRUE)
 
 * On peut facilement mettre en forme l'interface utilisateur d'une application avec CSS (*cascading style sheets*).
 
-  * Choisir une feuille de style sur [Bootswatch](https://bootswatch.com/)
-  * Télécharger le fichier `bootstrap.css` dans le dossier `www/` de votre appli
-  * Indiquer le thème avec `theme = "bootstrap.css"` dans la fonction `fluidPage()`
+  * choisir une feuille de style sur [Bootswatch](https://bootswatch.com/)
+  * télécharger le fichier `bootstrap.css` dans le dossier `www/` de votre appli
+  * indiquer le thème avec `theme = "bootstrap.css"` dans la fonction `fluidPage()`
 
 > [app13.R](correction/app13.R) avec un fichier [bootstrap.css](correction/www/bootstrap.css) dans le dossier `www/`
 
-# Déployement d'une appli avec shinyapps.io
+# Déploiement d'une application avec shinyapps.io
 
-* Créer un compte sur https://www.shinyapps.io/
-* Définir un nom de domaine. Vos applications apparaîtrons https://<domaine>.shinyapps.io/<appli>/
-* Rendez-vous sur la [page d'administration](https://www.shinyapps.io/admin/#/dashboard) et suivez les étapes pour connecter votre RStudio local à votre compte grâce à `rsconnect`.
-* Cliquer sur l'icône Publish <img src="https://docs.rstudio.com/connect/user/images/publishIcon.png" alt="publish" width="25"/>
-* Sélectionner les fichiers à publier, un nom et cliquer sur "Publish".
-* **Note** : Votre appli doit s'appeler `app.R` ou bien `ui.r`+`server.R`.
+* Créer un compte sur https://www.shinyapps.io/.
+* Définir un nom de domaine. Vos applications apparaîtront via https://<domaine>.shinyapps.io/<appli>/.
+* Rendez-vous sur la [page d'administration](https://www.shinyapps.io/admin/#/dashboard) et suivre les étapes afin de connecter votre RStudio local à votre compte grâce à `rsconnect`.
+* Cliquer sur l'icône Publish <img src="https://docs.rstudio.com/connect/user/images/publishIcon.png" alt="publish" width="25"/>.
+* Sélectionner les fichiers à publier, définir un nom et cliquer sur "Publish".
+* **Note** : V-votre application doit s'appeler `app.R` ou bien `ui.r`+`server.R`.
 * C'est fini !