diff --git a/seance4_4h/Fichiers du BE/Exo1.py b/seance4_4h/Fichiers du BE/Exo1.py
new file mode 100644
index 0000000000000000000000000000000000000000..ffbb61bb3f0ddea6648a3d1bf98c85143d636ffa
--- /dev/null
+++ b/seance4_4h/Fichiers du BE/Exo1.py	
@@ -0,0 +1,29 @@
+import random
+from tkinter import *
+
+def tirage():
+    nb = random.randint(1, 100)
+    texteResultat.set('Nombre : ' + str(nb))
+
+if __name__ == '__main__':
+    
+    # création de l'arbre de scène
+    racine = Tk() # Appel à une méthode de classe (et non un constructeur, cf slide cours #2)
+    racine.title('Tirage aléatoire')
+    racine.geometry('300x100+400+400')
+    
+    # Les widgets de la scène
+    
+    boutonQuitter = Button(racine, text='Quitter')
+    boutonQuitter.pack(side=LEFT, padx=5, pady=5)
+    texteResultat = StringVar()
+    labelResultat = Label(racine, textvariable=texteResultat)
+    labelResultat.pack(side=LEFT, padx=5, pady=5)
+    boutonLancer = Button(racine, text='Tirage')
+    boutonLancer.pack(side=LEFT, padx=5, pady=5)
+    
+    
+    # association des commandes aux widgets
+    boutonLancer.config(command=tirage) # appel dit callback (pas de parenthèses)
+    boutonQuitter.config(command=racine.destroy) # idem
+    racine.mainloop() # affichage de l'interface jusqu'à quit
\ No newline at end of file
diff --git a/seance4_4h/Fichiers du BE/Exo3.py b/seance4_4h/Fichiers du BE/Exo3.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb27d45ec91a797a09b9176fbaa6efa93f2df5e2
--- /dev/null
+++ b/seance4_4h/Fichiers du BE/Exo3.py	
@@ -0,0 +1,64 @@
+from tkinter import *
+from formes import *
+
+class ZoneAffichage(Canvas):
+    def __init__(self, parent, largeur, hauteur):
+        Canvas.__init__(self, parent, width=largeur, height=hauteur)
+        self.formeActuelle = "Rectangle"
+        self.__ListeFormes = []
+    
+    def ajout_forme(self, x, y):
+        if self.formeActuelle == 'Rectangle':
+            self.__ListeFormes.append(Rectangle(self, x-5, y-10, 10, 20, 'brown'))
+        else:
+            self.__ListeFormes.append(Ellipse(self, x-5, y-10, 25, 25, "brown"))
+    
+    def delete_forme(self, x, y):
+        for f in self.__ListeFormes:
+            if f.contient_point(x, y) == True:
+                f.effacer()
+                self.__ListeFormes.remove(1)
+                break
+    
+    def selection_rectangle(self):
+        self.formeActuelle = "Rectangle"
+    
+    def selection_ellipse(self):
+        self.formeActuelle = "Ellipse"
+
+class FenPrincipale(Tk):
+    def __init__(self):
+        Tk.__init__(self)
+        
+        self.configure(bg='grey')
+        
+        barreOutils = Frame(self)
+        barreOutils.pack(side=TOP)
+        
+        boutonRectangle = Button(barreOutils, text = 'Rectangle')
+        boutonRectangle.pack(side=LEFT, padx = 5, pady = 5)
+        boutonEllipse = Button(barreOutils, text = 'Ellipse')
+        boutonEllipse.pack(side=LEFT, padx = 5, pady = 5)
+        boutonCouleur = Button(barreOutils, text = 'Couleur')
+        boutonCouleur.pack(side=LEFT, padx = 5, pady = 5)
+        boutonQuitter = Button(barreOutils, text = 'Quitter')
+        boutonQuitter.pack(side=LEFT, padx = 5, pady = 5)
+        
+        self.__canevas = ZoneAffichage(self, 600, 400)
+        self.__canevas.pack(side=TOP, padx=10, pady=10)
+        
+        self.__canevas.bind("<ButtonRelease-1>", self.release_canevas)
+        boutonRectangle.config(command=self.__canevas.selection_rectangle)
+        boutonEllipse.config(command=self.__canevas.selection_ellipse)
+        self.__canevas.bind("<Control-ButtonRelease-1>", self.ctrlclick_canevas)
+        
+    def release_canevas(self, event):
+        self.__canevas.ajout_forme(event.x, event.y)
+    
+    def ctrlclick_canevas(self, event):
+        self.__canevas.delete_forme(event.x, event.y)
+        
+
+if __name__ == "__main__":
+    fen = FenPrincipale()
+    fen.mainloop()
\ No newline at end of file