FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 934, dernière mise à jour : 23 octobre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Comment accéder à une cellule et modifier sa valeur ?
- Comment affecter une formule à une cellule ?
- Comment remplir une cellule avec du texte ?
- Comment ajouter un hyperlien dans une cellule ?
- Comment modifier les propriétés police des cellules ?
- Comment modifier les propriétés protection des cellules ?
- Comment modifier la propriété arrière-plan des cellules ?
- Comment modifier les propriétés d'alignement de la cellule ?
- Comment récupérer la valeur d'une cellule ?
- Comment définir une plage de cellules ?
- Comment insérer des cellules/lignes/colonnes dans une feuille de calcul ?
- Comment supprimer des cellules/lignes/colonnes dans une feuille de calcul ?
- Comment déplacer une plage de cellules ?
- Comment copier une plage de cellules ?
- Comment fusionner des cellules ?
- Comment connaître le type d'une cellule ?
- Comment formater une cellule Date ?
Pour affecter une valeur à une cellule il suffit d'appeler la méthode SetValue.
Par l'intermédiaire d'une variable Cellule :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; Cellule : variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Cellule := Mafeuille.getCellByPosition(0, 0); Cellule.SetValue(123); end; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Var MonClasseur : Variant; MaFeuille : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Mafeuille.getCellByPosition(0, 0).SetValue(123); end; |
Pour affecter une formule à une cellule :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Var MonClasseur : Variant; MaFeuille : Variant; Cellule : variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Mafeuille.getCellByPosition(0, 0).SetFormula('=A2+B4'); end; |
Selon le type de texte que l'on souhaite intégrer, il faudra utiliser la fonction insertString (texte standard) ou insertControlCharacter (caractères spéciaux).
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Var MonClasseur : Variant; MaFeuille : Variant; MaCellule : variant; TextCursor : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MaCellule := Mafeuille.getCellByPosition(0, 0); TextCursor := MaCellule.createTextCursor; MaCellule.insertString( TextCursor, '1er Ligne', false ); MaCellule.insertControlCharacter( TextCursor, 0, false ); MaCellule.insertString( TextCursor, '2ème Ligne ', false ); end; |
- PARAGRAPH_BREAK = 0;
- LINE_BREAK = 1;
- HARD_HYPHEN = 2;
- SOFT_HYPHEN = 3;
- HARD_SPACE = 4;
- APPEND_PARAGRAPH = 5;
Pour ajouter un hyperlien dans une cellule :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Var MonClasseur : Variant; MaFeuille : Variant; MaCellule : variant; TextCursor : Variant; HyperlinkObj : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MaCellule := Mafeuille.getCellByPosition(0, 0); TextCursor := MaCellule.createTextCursor; HyperlinkObj := Document.createInstance('com.sun.star.text.TextField.URL'); HyperlinkObj.setPropertyValue('URL', 'http://www.developpez.com'); HyperlinkObj.setPropertyValue('Representation', 'Visiter Developpez.com'); MaCellule.insertTextContent(TextCursor, HyperlinkObj, false); end; |
Pour modifier les propriétés des cellules, il faut utiliser la procedure setPropertyValue(parametre, valeur).
Les paramètres et les valeur doivent respecter la casse.
- Propriété : CharFontName de type string
Cette propriété spécifie le nom de la police de caractère. - Propriété : CharWeight de type Extended
La gestion du gras s'effectue en modifiant l'épaisseur de la police de caractère. Cette valeur est comprise entre 0 et 200
Liste de valeurs disponible :
- 0 : Épaisseur non déterminé
- 50 : Fin
- 100 : Normal
- 150 : Gras
- 175 : Ultra Gras
- 200: Noir
- Propriété : CharPosture de type com.sun.star.awt.FontSlant
Cette propriété spécifie l'inclinaison des caractères dans le texte.
Liste des valeurs disponible :
- NONE :
- OBLIQUE :
- ITALIC
- DONTKNOW
- REVERSE_OBLIQUE
- REVERSE_ITALIC
Code delphi : Sélectionner tout CoreReflection.forName('com.sun.star.awt.FontSlant').getField('ITALIC').get();
- Propriété : CharHeight de type Extended
Définit la taille de la police. - Propriété : CharLocale de type CharLocale
Définit la langue utilisée par le correcteur orthographique pour corriger la partie sélectionnée du texte saisi.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Var Locale: variant; MaCellule : variant; Begin MaCellule := Mafeuille.getCellByPosition(0, 0); MaCellule.setPropertyValue('CharFontName', 'Arial'); MaCellule.setPropertyValue('CharHeight', 10); MaCellule.setPropertyValue('CharWeight', 150); MaCellule.setPropertyValue('CharPosture', CoreReflection.forName('com.sun.star.awt.FontSlant').getField('ITALIC').get()); CoreReflection.forName('com.sun.star.lang.Locale').createObject(Locale); Locale.Country := 'FR'; Locale.Language := 'fr'; Locale.Variant := 'fr'; MaCellule.setPropertyValue('CharLocale', Locale); end; |
Les informations de protection sont stockés dans un objet de type com.sun.star.util.CellProtection
- Propriété IsHidden de type boolean
Masque les formules et le contenu des cellules sélectionnées. - Propriété IsLocked de type boolean
Empêche toute modification des cellules sélectionnées. - Propriété IsFormulaHidden de type boolean
Masque les formules dans les cellules sélectionnées. - Propriété IsPrintHidden de type Boolean
Empêche l'impression des cellules sélectionnées.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Var MonClasseur, MaFeuille, MaCellule : Variant; Protection : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MaCellule := Mafeuille.getCellByPosition(0, 0); CoreReflection.forName('com.sun.star.util.CellProtection').createObject(protection); Protection.IsHidden := false; Protection.IsPrintHidden := true; Protection.IsLocked := true; Protection.IsFormulaHidden := true; MaCellule.setPropertyValue('CellProtection', Protection); end; |
La couleur d'arrière plan est stockée dans la propriété CellBackColor au format RVB (Rouge Vert Bleu)
Si la cellule ne doit pas contenir de couleur de remplissage, la propriété IsCellBackgroundTransparent, doit être basculée à True.
Exemple pour définir la couleur suivante :
La couleur choisie est constituée de la manière suivante :
- Rouge : 187 en décimales, soit la valeur BB en Hexadécimal
- Vert : 187 en décimales, soit la valeur BB en Hexadécimal
- Bleu : 255 en décimales, soit la valeur FF en Hexadécimal
Pour définir cette couleur comme arrière plan de la cellule, il faudra passer la valeur $BBBBFF ($RougeVertBleu en hexadécimal)
Code delphi : | Sélectionner tout |
1 2 | MaCellule.setPropertyValue('IsCellBackgroundTransparent', false); MaCellule.setPropertyValue('CellBackColor', $BBBBFF); |
Pour modifier les propriétés des cellules, il faut utiliser la procédure setPropertyValue(parametre, valeur). Attention les paramètres et les valeur doivent respecter la casse.
- Propriété : HoriJustify de type CellHoriJustify
Spécifie l'alignement horizontal à appliquer au contenu de la cellule.
Liste des valeurs Possible :
- STANDARD (Alignement par défaut : Gauche pour des chiffres, Droit pour du texte)
- LEFT (Alignement a Gauche)
- CENTER (Alignement centré)
- RIGHT (Alignement à droite)
- BLOCK (Alignement justifié)
- REPEAT
Code delphi : Sélectionner tout CoreReflection.forName('com.sun.star.table.CellHoriJustify').getField('LEFT').get();
- Propriété : ParaIndent de type byte
Crée un retrait de la valeur que vous spécifiez par rapport au bord gauche de la cellule. - Propriété : VertJustify de type CellVertJustify
Spécifie l'option d'alignement vertical à appliquer au contenu de la cellule.
Liste des valeurs Possible :
- STANDARD
- TOP
- CENTER
- BOTTOM
Code delphi : Sélectionner tout CoreReflection.forName('com.sun.star.table.CellVertJustify').getField('TOP').get();
- Propriété : RotateAngle de type Integer
Spécifie l'angle de rotation du texte pour la ou les cellules sélectionnées. Un nombre positif fait pivoter le texte vers la gauche, un nombre négatif le fait pivoter vers la droite. - Propriété : RotateReference de type CellVertJustify
Spécifie le bord de la cellule à partir duquel le texte pivoté doit être écrit.
Liste des valeurs Possible :
- STANDARD
- TOP
- CENTER
- BOTTOM
Code delphi : Sélectionner tout CoreReflection.forName('com.sun.star.table.CellVertJustify').getField('TOP').get();
- Propriété : de type
Spécifie l'écart devant séparer le bord gauche de la cellule et le bord gauche du contenu de celle-ci. - Propriété : de type
Spécifie l'écart devant séparer le bord supérieur de la cellule et le bord supérieur du contenu de celle-ci. - Propriété : de type
Spécifie l'écart devant séparer le bord droit de la cellule et le bord droit du contenu de celle-ci. - Propriété : de type
Spécifie l'écart devant séparer le bord inférieur de la cellule et le bord inférieur du contenu de celle-ci. - Propriété : IsTextWrapped de type Boolean
Spécifie si le texte inséré doit passer à la ligne si la case n'est pas suffisamment large.
Pour récupérer la valeur d'une cellule, il suffit d'appeler la méthode GetValue.
Par l'intermédiaire d'une variable Cellule :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; Cellule : variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Cellule := Mafeuille.getCellByPosition(0, 0); Result:=Cellule.GetValue; end; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Var MonClasseur : Variant; MaFeuille : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Result:=Mafeuille.getCellByPosition(0, 0).GetValue; end; |
Une plage de cellules est contenue dans un objet de classe com.sun.star.table.CellRangeAddress
Propriétés de l'objet com.sun.star.table.CellRangeAddress :
- Sheet : Index de la feuille de calcul dans laquelle nous définissons la plage (0 pour la feuille 1)
- StartColumn : Index de la colonne de départ de la sélection
- EndColumn : Index de la colonne de fin de la sélection
- StartRow : Index de la Ligne de départ de la sélection
- EndRow : Index de la Ligne de départ de la sélection
Pour créer un objet de cette classe, nous devons utiliser l' API de reflections
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // Définition de la plage [A1:B2] sur la feuille 1 Var CoreReflection : Variant; MaPlage : Variant; begin CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection .forName('com.sun.star.table.CellRangeAddress') .createObject(MaPlage); MaPlage.Sheet := 0; Maplage.StartColumn :=0; Maplage.StartRow :=0; Maplage.EndColumn :=1; Maplage.EndRow :=1; end; |
L'insertion de cellules dans une feuille de calcul se passe en 2 temps.
Dans un premier temps, nous devons définir la plage de cellules que nous voulons insérer à l'aide d'un objet de classe com.sun.star.table.CellRangeAddress
Ensuite nous allons utiliser la fonction InsertCells(MaPlage, ModeDInsertion)
- MaPlage correspond à l'objet dans lequel nous avons défini la plage de cellules
- ModeDInsertion définit la manière dont se comporte le contenu des cellules sélectionnées sa valeur peut être :
- 1 : Déplace la plage de cellules vers le bas
- 2 : Déplace la plage de cellules vers la droite
- 3 : Insère des lignes entières
- 4 : Insère des colonnes entières
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Var MonClasseur : Variant; MaFeuille : Variant; CoreReflection : Variant; MaPlage : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection .forName('com.sun.star.table.CellRangeAddress') .createObject(MaPlage); MaPlage.Sheet := 0; Maplage.StartColumn :=0; Maplage.StartRow :=0; Maplage.EndColumn :=1; Maplage.EndRow :=1; Mafeuille.insertCells(Maplage, 1); end; |
Nous allons utiliser la fonction InsertByIndex(IndexDeColonne, NombreDeColonne)
- IndexDeColonne : est l'index de la première colonne insérée.
- NombreDeColonne : Nombre de Colonne que vous voulez insérer
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; MesColonnes : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MesColonnes := MaFeuille.GetColumns; MesColonnes.insertByIndex(1,1); end; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; MesLignes : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MesLignes := MaFeuille.GetRows; MesLignes.insertByIndex(1,1); end; |
La suppression de cellules dans une feuille de calcul se passe en 2 temps.
Dans un premier temps, nous devons définir la plage de cellules que nous voulons supprimer à l'aide d'un objet de classe com.sun.star.table.CellRangeAddress
Ensuite nous allons utiliser la fonction RemoveRange(MaPlage, ModeDeSuppression)
- MaPlage correspond à l'objet dans lequel nous avons définis la plage de cellules
- ModeDeSuppression définit la manière dont se comporte le contenu des cellules sélectionnées. Sa valeur peut être :
- 1 : Les cellules se trouvant en dessous prennent la place des cellules supprimées.
- 2 : Les cellules se trouvant à droite prennent la place des cellules supprimées.
- 3 : Supprime les lignes entières de la sélection
- 4 : Supprime les colonnes entières de la sélection
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Var MonClasseur : Variant; MaFeuille : Variant; CoreReflection : Variant; MaPlage : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection .forName('com.sun.star.table.CellRangeAddress') .createObject(MaPlage); MaPlage.Sheet := 0; Maplage.StartColumn :=0; Maplage.StartRow :=0; Maplage.EndColumn :=1; Maplage.EndRow :=1; Mafeuille.removeRange(Maplage, 1); end; |
Nous allons utiliser la fonction RemoveByIndex(Indexdecolonne, NombredeColonne)
- IndexDeColonne : est l'index de la première colonne effacée.
- NombreDeColonne : Nombre de Colonne que vous voulez effacer
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; MesColonnes : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MesColonnes := MaFeuille.GetColumns; MesColonnes.removeByIndex(1,1); end; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Var MonClasseur : Variant; MaFeuille : Variant; MesLignes : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); MesLignes := MaFeuille.GetRows; MesLignes.removeByIndex(1,1); end; |
Pour effectuer un déplacement d'une plage de cellule, nous devons définir la plage de cellule source (objet de classe com.sun.star.table.CellRangeAddress) et l'adresse de la cellule de destination (objet de classe com.sun.star.table.CellAddress).
Ensuite nous allons utiliser la fonction MoveRange(madestination, maselection).
- madestination correspond à l'objet dans lequel nous avons défini la cellule de destination.
- Maselection correspond à l'objet dans lequel nous avons défini la plage de cellules.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Var MonClasseur : Variant; MaFeuille : Variant; CoreReflection : Variant; MaDestination : Variant; MaPlage : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection .forName('com.sun.star.table.CellAddress') .createObject(MaDestination); CoreReflection .forName('com.sun.star.table.CellRangeAddress') .createObject(MaPlage); MaDestination.Sheet := 0; MaDestination.Column := 5; MaDestination.Row := 5; MaPlage.Sheet := 0; Maplage.StartColumn :=0; Maplage.StartRow :=0; Maplage.EndColumn :=1; Maplage.EndRow :=1; Mafeuille.MoveRange(MaDestination, MaPlage); end; |
Pour effectuer une copie d'une plage de cellule, nous devons définir la plage de cellule source (objet de classe com.sun.star.table.CellRangeAddress) et l'adresse de la cellule de destination (objet de classe com.sun.star.table.CellAddress).
Ensuite nous allons utiliser la fonction CopyRange(madestination, maselection)
- madestination correspond à l'objet dans lequel nous avons définis la cellule de destination
- Maselection correspond à l'objet dans lequel nous avons définis la plage de cellules
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Var MonClasseur : Variant; MaFeuille : Variant; CoreReflection : Variant; MaDestination : Variant; MaPlage : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection .forName('com.sun.star.table.CellAddress') .createObject(MaDestination); CoreReflection .forName('com.sun.star.table.CellRangeAddress') .createObject(MaPlage); MaDestination.Sheet := 0; MaDestination.Column := 5; MaDestination.Row := 5; MaPlage.Sheet := 0; Maplage.StartColumn :=0; Maplage.StartRow :=0; Maplage.EndColumn :=1; Maplage.EndRow :=1; Mafeuille.CopyRange(MaDestination, MaPlage); end; |
Voici un exemple de fusion et d'annulation de fusion pour la plage de cellule A1:B1 :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | Var MonClasseur : Variant; MaFeuille : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); If Mafeuille.getCellRangeByName('A1:B1').Getismerged then Mafeuille.getCellRangeByName('A1:B1').merge(False) else Mafeuille.getCellRangeByName('A1:B1').merge(True); end; |
La fonction merge, quand a elle, permet de basculer l'état de la sélection de fusionné à non fusionné.
Pour récupérer le type de donnée stockée dans une cellule, il suffit d'appeler la méthode GetType par l'intermédiaire d'une variable Cellule
Cette méthode retourne :
- 0 pour une Cellule Vide
- 1 pour une Cellule contenant une valeur de type Nombre
- 2 pour une Cellule contenant une valeur de type Chaine de caractère
- 3 pour une Cellule contenant une valeur de type Formule
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | Var MonClasseur : Variant; MaFeuille : Variant; begin MonClasseur := Document.getSheets; MaFeuille := MonClasseur.GetByName('Feuille1'); Case Mafeuille.getCellByPosition(0, 0).GetType of 0 : showmessage('Cellule Vide'); 1 : showmessage('Cellule contenant un Nombre'); 2 : showmessage('Cellule contenant une chaine de caractère'); 3 : showmessage('Cellule contenant une formule'); end; end; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | var ifDateClassique,ifdate : Integer; Locale,Formats : Variant; maCellule : Variant; begin Locale:=monDocument.CharLocale; {pour changer la Localisation , utilisez ce qui suit } {CoreServ.forName('com.sun.star.lang.Locale').createObject(Locale); Locale.Country:='FR'; Locale.Language:='fr'; Locale.Variant := ''; } // ici je récupère un indice pour les cellules dans lequelles je mettrai des dates Formats:=MonDocument.GetNumberFormats(); ifDateClassique:=Formats.QueryKey('JJ/MM/AAAA',Locale,TRUE); // toujours pas trouvé ? alors ifdateClassique:=0 pas de formatage if ifDateClassique=-1 then ifDateClassique:=0; // si je ne veux pas de ce bon vieux JJ/MM/AAAA j'en crée un inexistant ? iFDate:=Formats.QueryKey('MMM AAAA JJ',Locale,TRUE); if IfDate=-1 then begin ifDate:=Formats.AddNew('MMM AAAA JJ',Locale); if ifDate=-1 then ifDate:=ifDateClassique; end; //Mettre une date // macellule:=maFeuille.getCellByPosition(colonne,ligne); maCellule.NumberFormat:=ifdate; macellule.Value:=date; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.