diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml
index 8fac1536..b6fa53af 100644
--- a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml
+++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml
@@ -103,7 +103,7 @@
             
         
     
-    
+    
         
             
                 
diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml.cs b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml.cs
index 94d075a1..d5f8df92 100644
--- a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml.cs
+++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PlayerCharacterEditorPage.xaml.cs
@@ -25,18 +25,6 @@ namespace AideDeJeu.Views.PlayerCharacter
             BindingContext = DependencyService.Get(); // new PlayerCharacterEditorViewModel();
 
             InitializeComponent();
-
-            if (!Accelerometer.IsMonitoring)
-            {
-                Accelerometer.ShakeDetected += Accelerometer_ShakeDetected;
-                Accelerometer.Start(SensorSpeed.Game);
-            }
-        }
-
-        private void Accelerometer_ShakeDetected(object sender, EventArgs e)
-        {
-            var vm = BindingContext as PlayerCharacterEditorViewModel;
-            vm.RollDicesMRickCommand.Execute(null);
         }
 
         //protected override bool OnBackButtonPressed()
@@ -79,5 +67,49 @@ namespace AideDeJeu.Views.PlayerCharacter
             //Navigation.PushModalAsync(page, true);
             await Navigation.PushAsync(page, true);
         }
+
+        private void Abilities_Appearing(object sender, EventArgs e)
+        {
+            if (!Accelerometer.IsMonitoring)
+            {
+                Accelerometer.ShakeDetected += Accelerometer_ShakeDetected;
+                Accelerometer.Start(SensorSpeed.Game);
+            }
+            if (!Gyroscope.IsMonitoring)
+            {
+                Gyroscope.ReadingChanged += Gyroscope_ReadingChanged;
+                Gyroscope.Start(SensorSpeed.Game);
+            }
+        }
+
+        private void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
+        {
+            if(e.Reading.AngularVelocity.Z >= 1)
+            {
+                var vm = BindingContext as PlayerCharacterEditorViewModel;
+                vm.ResetDicesCommand.Execute(null);
+            }
+        }
+
+
+        private void Accelerometer_ShakeDetected(object sender, EventArgs e)
+        {
+            var vm = BindingContext as PlayerCharacterEditorViewModel;
+            vm.RollDicesMRickCommand.Execute(null);
+        }
+
+        private void Abilities_Disappearing(object sender, EventArgs e)
+        {
+            if (Gyroscope.IsMonitoring)
+            {
+                Gyroscope.Stop();
+                Gyroscope.ReadingChanged -= Gyroscope_ReadingChanged;
+            }
+            if (Accelerometer.IsMonitoring)
+            {
+                Accelerometer.Stop();
+                Accelerometer.ShakeDetected -= Accelerometer_ShakeDetected;
+            }
+        }
     }
 }
\ No newline at end of file