Activex Database Objet. C'est la couche d'accès aux bases de données, le SGBD (Système de Gestion de Base de Données) de VB.



Documents pareils
Visual Basic et les Bases de Données

Paginer les données côté serveur, mettre en cache côté client

Rapport de Mini-Projet en ArcGIS Engine

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

Introduction à ADO.NET

ADO.NET SUPINFO DOT NET TRAINING COURSE

Tutorial sur SQL Server 2000

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

TP3 1 : WEB APPLICATIONS AVEC ASP.NET

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

LES ACCES ODBC AVEC LE SYSTEME SAS

Gestion de stock pour un magasin

Gestion du cache dans les applications ASP.NET

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

Corrigé de l'atelier pratique du module 6 : Transfert de données

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Form Designer Guide d utilisateur DOC-FD-UG-FR-01/01/12

Hébergement et configuration de services WCF. Version 1.0

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Introduction de Windows Form

Java DataBaseConnectivity

Utiliser une base de données

Connexion à SQL server

Dossier I Découverte de Base d Open Office

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

MODE OPERATOIRE CORIM PROGRESS / SECTION MEI. Exploitation Informatique

SOMMAIRE. Travailler avec les requêtes... 3

PROGRAMMATION EVENEMENTIELLE sur EXCEL

La double authentification dans SharePoint 2007

Créer une base de données

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

MODE OPERATOIRE OPENOFFICE BASE

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

PHP 4 PARTIE : BASE DE DONNEES

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Cours Bases de données 2ème année IUT

Notes de cours : bases de données distribuées et repliquées

Modélisation et Gestion des bases de données avec mysql workbench

Alfresco Guide Utilisateur

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

PHP. PHP et bases de données

La Clé informatique. Formation Excel XP Aide-mémoire

Manuel d'utilisation d'apimail V3

Mysql. Les requêtes préparées Prepared statements

CREATION WEB DYNAMIQUE

.NET - Classe de Log

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

PHP 5. La base de données MySql. A. Belaïd 1

Le Langage De Description De Données(LDD)

TP1 - Prise en main de l environnement Unix.

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

OpenPaaS Le réseau social d'entreprise

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

MEDIAplus elearning. version 6.6

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Introduction à JDBC. Accès aux bases de données en Java

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

La gestion des boîtes aux lettres partagées

1/ Présentation de SQL Server :

SOMMAIRE. Accéder à votre espace client. Les Fichiers communs. Visualiser les documents. Accéder à votre espace client. Changer de Workspace

sommaire Archives... Archiver votre messagerie... Les notes... Les règles de messagerie... Les calendriers partagés Les listes de diffusions...

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

ORACLE TUNING PACK 11G

Cours Apl 11 - Introduction à la gestion des écrans

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Compte-rendu de projet de Système de gestion de base de données

Mysql avec EasyPhp. 1 er mars 2006

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Connexion entre une BD FileMaker Pro 10 et ArcGis 10.x sous Windows 7

Note de cours. Introduction à Excel 2007

Utiliser ma messagerie GMAIL

1 TD 2 : Construction d'une chier Acrobat et envoi par

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

MO-Call pour les Ordinateurs. Guide de l utilisateur

Bases de Données relationnelles et leurs systèmes de Gestion

SMS INFO & TABLEAU DE BORD CLIENT. Avec Cloud Communication Solution (C.C.S).

Gestion des transactions et accès concurrents dans les bases de données relationnelles

SQL Server et Active Directory

Transcription:

ADO.NET Activex Database Objet Généralités ADO.NET. Permet d accéder aux bases de données à partir de VB.NET. ADO veut dire Activex Database Objet. C'est la couche d'accès aux bases de données, le SGBD (Système de Gestion de Base de Données) de VB. ADO.NET à un langage unique pour ouvrir, interroger, modifier plusieurs types de bases de données. Le langage de requête est le SQL. En VB il y a 2 manières d'écrire un programme qui utilise une base de données: - Écrire du code pour créer des objets Ado.net, pour ouvrir la base, pour créer la liaison entre la base et un DataSet avec des critères de sélection écrits en SQL. - Utiliser l assistant de configuration de source de base de données qui crée les objets et le code à votre place. On peut même lier une table à une liste par exemple qui sera 'remplie' automatiquement par la table (On parle de Binding). 79

ADO.NET Les Managed Providers Pour avoir accès aux données il faut charger les DRIVERS (ou providers). OLE DB Managed Provider est fourni dans 'System'; après avoir importé le NameSpace System.Data.OLEDB, on peut travailler sur des bases Access par exemple. SQL Server Managed Provider est fourni dans 'System'; après avoir importé le NameSpace System.Data.SqlClient, on peut travailler sur des bases SqlServer. Exemple, pour travailler sur une base Access, il faudra taper: Imports System.Data.OLEDB 80

ADO.NET Les Objets ADO.NET Il faut disposer d'un objet Connexion pour avoir accès à la base de données On met dans la propriété ConnectionString les paramètres de la base de données (nom de la base de données, chemin, mot de passe..). En fonction de la BD les paramètres sont différents. Avec la méthode Open on ouvre la base. Avec la méthodes Close on ferme la base. On peut ensuite travailler de 2 manières: A- On manipule directement la base. (sans retour de résultats) Avec un objet Command on peut manipuler directement la BD (en SQL avec UPDATE, INSERT, DELETE CREATE DROP..), on utilise la propriété ExecuteNonQuery pour cela. 81

ADO.NET B- On envoie une requête Sql 'SELECT' à la base, on récupère le résultat dans un objet. Avec un objet DataReader on extrait les données en lecture seule: une requête SQL (sur un objet command) charge le DataReader. c'est rapide; on peut lire uniquement les données et aller à l'enregistrement suivant. Il travaille en mode connecté. Pour gérer un DataReader on a besoin d'un objet Command. Avec un objet DataSet on manipule les données: une requête SQL (sur un objet command) charge le DataSet avec des enregistrements ou des champs, on travaille sur les lignes et colonnes du DataSet en local, en mode déconnecté(une fois que le DataSet est chargé, la connexion à la base de données est libérée). Pour alimenter un DataSet on a besoin d'un objet DataAdapter qui fait l'intermédiaire entre la BD et le DataSet. Noter bien le sens des flèches: le DataReader est en lecture seule, les données lues dans la BD sont accessibles dans le DataReader. le DataSet peut lire et écrire des données dans la BD, il faut un DataAdapter en plus de la connexion. l'objet Command peut modifier la BD. 82

ADO.NET Ce schéma souligne aussi les objets intermédiaires nécessaires: Un objet connexion dans tous les cas, Un objet Command pour le DataReader, Un objet DataAdapter plus un objet Command pour le DataSet. L'objet Command permet d'envoyer des ordres en SQL à la BD et de la modifier, il permet aussi, quand on utilise un DataSet, d'envoyer une requête SELECT en SQL afin de remplir le DataSet avec le résultat de la requête. Enfin certains contrôles comme les DataGrid, les ListBox par exemple peuvent afficher des données à partir d'un DataSet. Pour mettre à jour la base après modification du DataSet ou de la Grid il faut un objet CommandBuilder. Mode connecté ou déconnecté: Le DataReader fonctionne en mode connecté. La connexion entre la BD et le DataReader est ouverte tant que le DataReader fonctionne. Le DataSet peut travailler en mode déconnecté: on ouvre la connexion, on charge le DataSet, on ferme la connexion (il faut le faire, ce n'est pas automatique), on travaille sur le DataSet, on peut le réouvrir plus tard pour les mises à jour. 83

ADO.NET Remarque: En fonction du provider, le nom des objets change: Avec le provider OleDb, après Imports System.Data.OleDb on utilisera OleDbConnexion, OleDbAdapter... Avec le provider SQL, après Imports System.Data.SqlClient on utilisera SqlConnexion, SqlAdapter... Le DataReader Le DataReader permet donc de lire très rapidement une table, enregistrement par enregistrement, du début à la fin. Il n'y a pas possibilité d'écrire dans la base. Le DataSet Le DataSet a la structure d'une base de données mais en local; il contient: Des DataTable qui contiennent des DataRow et des DataColumn. Pour utiliser DataSet, DataTable, DataRow.. il faut importer l'espace de nom Data: Imports System.Data 84

ADO.NET On peut créer un Dataset de toutes pièces, mais la plupart du temps, on charge le DataSet à partir d'une base de données. Une requête SQL charge le DataSet, on travaille sur les lignes et colonnes du DataSet en local ( sur des enregistrements ou des champs), en mode déconnecté (une fois que le DataSet est chargé, la connexion à la base de données peut être libérée). La structure de données du DataSet reflétera automatiquement et exactement celle des données extraites. Si j'extrais 2 colonnes de données avec l'instruction Sql fournis à l'objet Command, le DataSet aura une table (DataTable) de 2 colonnes avec les données extraites. Exemple : Avec ADO.NET je lance une requête SQL demandant toutes les fiches de la table 'nom' dont le champ 'prénom' est Mohamed', je récupère un DataSet local contenant toutes les fiches (Le DataColumn "Prénom" ne contient que des Mohamed'). Je peux modifier en local le DataSet, (modifier une date de naissance par exemple) et mettre à jour automatiquement la base de données distante. Il existe aussi les DataView qui représentent une vue d'un DataTable. (Un DataView peut contenir un champ d'une table d'un DataSet, ou les enregistrements répondant à un critère). 85

VB.NET Exemple :Etablir une connexion Base Access via VB.net Code : Imports System.Data.OleDb Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Module1.connexion() End Class Code : Imports System.Data.OleDb Module Module1 Public Sub connexion() Dim cn As New OleDb.OleDbConnection cn = New OleDb.OleDbConnection("provider=Microsoft.jet.oledb.4.0; data source=mabase.mdb") End Module 86

Exemple complet Me Le mot clé Me permet de faire référence à l'instance spécifique d'une classe ou d'une structure dans laquelle le code s'exécute actuellement. Me se comporte comme une variable objet ou une variable structure faisant référence à l'instance actuelle. L'utilisation de Me est particulièrement utile pour le passage des informations concernant l'instance d'une classe ou d'une structure en cours d'exécution, à une procédure se trouvant dans une autre classe, une autre structure ou un autre module. Focus() Lorsqu'une fenêtre ou un contrôle est actif on dit qu'il a le focus. Un contrôle qui a le focus est celui qui reçoit les évènements clavier, souris.. Comment donner le focus à un contrôle? Avec la méthode Focus. TxtNom.Focus() Me.txtnom.Focus() Nothing : C est le mot clef en VB pour null. Exemple: Vérifier si un objet est null en VB.Net, If (items is Nothing) Then 'do stuff End If Update() 'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb) dta.update(dts, "table " ) Me.Show 'Shows the form currently executing code 87

Exemple complet Met à jour la base après modification du DataSet 88

Exemple complet Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ouverture de la connection(à partir du répertoire de l'application) conn = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\employés2.mdb;" cnx = New OleDbConnection cnx.connectionstring = conn cnx.open() sql = "select temployés2.* from temployés2" cmd = New OleDbCommand(sql) dta = New OleDbDataAdapter(cmd) cmd.connection() = cnx 'chargement du DataSet à partir du DataAdapter dta.fill(dts, "temployés2") 'chargement de la DataTable à partir du DataSet dtt = dts.tables("temployés2") 'si la table est vide alors If dtt.rows.count= 0 Then 'désactivation des boutons pour éviter une erreur si la table est vide btnajou.enabled = False btnenr.enabled = True Me.Show() Me.txtnom.Focus() Else 'affichage des données dans les textbox Me.txtref.Text = dtt.rows(rownum).item("numemployé") Me.txtnom.Text = dtt.rows(rownum).item("nom") Me.txtprenom.Text = dtt.rows(rownum).item("prénom") Me.txtjob.Text = dtt.rows(rownum).item("emploi") btnenr.enabled = False End If 89

Exemple complet Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed dts.clear() cnx.close() cnx = Nothing Private Sub btnprec_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnprec.click 'si début du fichier ou table vide message: sortie de procédure If rownum = 0 Or rownum > dtt.rows.count - 1 Then MessageBox.Show("Vous êtes sur le premier enregistrement ou la table ne contient aucun enregistrement!", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If 'aller à la ligne précédente rownum -= 1 'affichage des données dans les textbox Me.txtref.Text = dtt.rows(rownum).item("numemployé") Me.txtnom.Text = dtt.rows(rownum).item("nom") Me.txtprenom.Text = dtt.rows(rownum).item("prénom") Me.txtjob.Text = dtt.rows(rownum).item("emploi") 90

Exemple complet Private Sub btnsui_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnsui.click 'si fin du fichier ou table vide message:sortie de procédure If rownum = dtt.rows.count - 1 Or rownum > dtt.rows.count - 1 Then MessageBox.Show("Vous êtes sur le dernier enregistrement ou la table ne contient aucun enregistrement!", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If 'aller à la ligne suivante rownum += 1 'affichage des données dans les texbox Me.txtref.Text = dtt.rows(rownum).item("numemployé") Me.txtnom.Text = dtt.rows(rownum).item("nom") Me.txtprenom.Text = dtt.rows(rownum).item("prénom") Me.txtjob.Text = dtt.rows(rownum).item("emploi") 91

Exemple complet Private Sub btnajou_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnajou.click If btnajou.text = "Ajouter" Then 'désactivation des boutons de déplacement btnprec.enabled = False 'précédent btnsui.enabled = False 'suivant 'activation du bouton valider btnenr.enabled = True 'vider les textbox Me.txtref.Text = "" Me.txtnom.Text = "" Me.txtprenom.Text = "" Me.txtjob.Text = "" 'changement du texte du bouton pour l'annulation de la procédure Me.btnajou.Text = "Annuler" Else 'si btnajou.text = "Annuler" alors annulation de la procédure d'ajout (pas l'ajout!!) si la table est vide désactivation des boutons If rownum > dtt.rows.count - 1 Then btnenr.enabled = False btnajou.text = "Ajouter" Else 'aller au début du fichier rownum = 0 'affichage des données dans les textbox Me.txtref.Text = dtt.rows(rownum).item("numemployé") Me.txtnom.Text = dtt.rows(rownum).item("nom") Me.txtprenom.Text = dtt.rows(rownum).item("prénom") Me.txtprenom.Text = dtt.rows(rownum).item("emploi") btnenr.enabled = False btnajou.text = "Ajouter" 'activation des boutons de déplacement End If End If btnprec.enabled = True btnsui.enabled = True 'précédent 'suivant 92

Exemple complet Private Sub btnenr_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnenr.click 'si un champ n'est pas rempli fin de procédure If Me.txtnom.Text = "" Or _ Me.txtprenom.Text = "" Or _ Me.txtjob.Text = "" Then MessageBox.Show("Vous devez remplir tous les champs!", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error) Me.txtnom.Focus() Exit Sub End If 'création d'une nouvelle ligne avec les données des textbox dtr = dts.tables("temployés2").newrow dtr("nom") = Me.txtnom.Text dtr("prénom") = Me.txtprenom.Text dtr("emploi") = Me.txtjob.Text 'ajout de la ligne dans le DataSet dts.tables("temployés2").rows.add(dtr) 'création et exécution du commandbuilder pour mettre à jour le DataAdapter cmdb = New OleDbCommandBuilder(dta) 'mise à jour des données du DataAdapter à partir du commandbuilder dta.update(dts, "temployés2") 'on vide le dataset pour le recréer avec les nouvelles données dts.clear() dta.fill(dts, "temployés2") dtt = dts.tables("temployés2") 'aller au début du fichier rownum = 0 'affichage des données dans les texbox Me.txtref.Text = dtt.rows(rownum).item("numemployé") Me.txtnom.Text = dtt.rows(rownum).item("nom") Me.txtprenom.Text = dtt.rows(rownum).item("prénom") Me.txtjob.Text = dtt.rows(rownum).item("emploi") 'activation des boutons btnprec.enabled = True 'précédent btnsui.enabled = True 'suivant btnajou.enabled = True btnenr.enabled = False 'valider btnajou.text = "Ajouter" 93

Exercices d application Exercice 1: Ecrire un programme VB.net permettant d ajouter le contenu d une zone de saisie à une zone de texte multi lignes 94

Exercices d application Exercice 3: Ecrire un programme VB.net permettant de calculer l IMC (indice de la masse corporelle) 95

Exercices d application Exercice 1: Ecrire un programme VB.net permettant d ajouter le contenu d une zone de saisie à une zone de texte multi lignes Exercice 3: Ecrire un programme VB.net permettant de calculer l IMC (indice de la masse corporelle) Exercice 2: Ecrire un programme VB.net permettant d afficher le contenu d une zone de saisie dans une zone label 96

Exemple Exercices complet d application txtmultilignes btnajouter txtajout Public Class Form1 ' évt btnajouter_click Private Sub btnajouter_click1(byval sender As Object, ByVal e As System.EventArgs) _ Handles btnajouter.click ' ajout du contenu de txtajout à celui de txtmultilignes txtmultilignes.text &= txtajout.text txtajout.text = "" End Class 97

Exemple Exercices complet d application Public Class Form1 ' clic sur btn quitter Private Sub cmdquitter_click(byval sender As Object, ByVal e As System.EventArgs) _ Handles cmdquitter.click ' clic sur bouton Quitter - on quitte l'application Application.Exit() ' modification champ txtsaisie Private Sub txtsaisie_textchanged(byval sender As Object, ByVal e As System.EventArgs) _ Handles txtsaisie.textchanged ' le contenu du TextBox a changé - on le copie dans le Label lblcontrole lblcontrole.text = txtsaisie.text ' clic sur btn effacer Private Sub cmdeffacer_click(byval sender As Object, ByVal e As System.EventArgs) _ Handles cmdeffacer.click ' on efface le contenu de la boîte de saisie txtsaisie.text = "" End Class 98

Exemple Exercices complet d application Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBoxTaille.Text = "" TextBoxPoids.Text = "" labelimc.text = "" labelpi.text = "" labelm.text = "" labels.text = "" labelo.text = "" Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click Me.Close() 99

Exemple Exercices complet d application Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim spoids As Single 'Variable Single contenant le poids Dim staille As Single 'Variable Single contenant la taille '******contrôle de validité des entrées************ 'Les valeurs saisies sont-elles numérique? If Not (IsNumeric(TextBoxTaille.Text)) Then MsgBox("Entrez une valeur numérique pour la taille") Exit Sub End If If Not (IsNumeric(TextBoxPoids.Text)) Then MsgBox("Entrez une valeur numérique pour le poids") Exit Sub End If 'Convertir les textes saisis en single ' et les mettre dans les variables staille = CType(TextBoxTaille.Text, Single) / 100 spoids = CType(TextBoxPoids.Text, Single) 'Les valeurs saisies sont-elles cohérentes? If staille < 0.5 Or staille > 2.5 Then MsgBox("Entrez une taille valide") Exit Sub End If If spoids < 20 Or spoids > 200 Then MsgBox("Entrez un poids valide") Exit Sub End If 'Effectuer les calculs et afficher les résultats. labelimc.text = (Math.Round(sPoids / (staille * staille), 2)).ToString labelpi.text = (Math.Round(22 * (staille * staille), 2)).ToString labelm.text = (Math.Round(18.5 * (staille * staille), 2)).ToString labels.text = (Math.Round(25 * (staille * staille), 2)).ToString labelo.text = (Math.Round(30 * (staille * staille), 2)).ToString Arrondi avec 2 chiffres après la virgule 100