IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 124, nombre de questions : 929, dernière mise à jour : 31 décembre 2023  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.

SommaireOpenOffice.orgOpenOffice - TableurOpenOffice - Gestion des cellules (17)
précédent sommaire suivant
 

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;
Ou directement en utilisant la feuille :
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;

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 20 janvier 2014 atlantis

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;
Liste des codes utilisable avec la fonction insertControlCharacter :
  • PARAGRAPH_BREAK = 0;
  • LINE_BREAK = 1;
  • HARD_HYPHEN = 2;
  • SOFT_HYPHEN = 3;
  • HARD_SPACE = 4;
  • APPEND_PARAGRAPH = 5;

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 20 janvier 2014 atlantis

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.

  1. Propriété : CharFontName de type string
    Cette propriété spécifie le nom de la police de caractère.
  2. 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
  3. 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();
  4. Propriété : CharHeight de type Extended
    Définit la taille de la police.
  5. 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;

Mis à jour le 20 janvier 2014 atlantis


Les informations de protection sont stockés dans un objet de type com.sun.star.util.CellProtection
  1. Propriété IsHidden de type boolean
    Masque les formules et le contenu des cellules sélectionnées.
  2. Propriété IsLocked de type boolean
    Empêche toute modification des cellules sélectionnées.
  3. Propriété IsFormulaHidden de type boolean
    Masque les formules dans les cellules sélectionnées.
  4. 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;

Mis à jour le 20 janvier 2014 atlantis


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);

Mis à jour le 20 janvier 2014 atlantis

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.


  1. 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();
  2. 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.
  3. 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();
  4. 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.
  5. 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();
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.

Mis à jour le 20 janvier 2014 atlantis

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;
Ou directement en utilisant la feuille :
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;

Mis à jour le 20 janvier 2014 MFDev

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;

Mis à jour le 20 janvier 2014 atlantis

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;
Pour insérer simplement des colonnes il existe une autre technique qui ne nécessite pas la création d'une plage de cellules.

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;
Nous pouvons faire de même pour l'insertion de lignes
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;

Mis à jour le 20 janvier 2014 atlantis

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;
Pour effacer simplement des colonnes il existe une autre technique qui ne nécessite pas la création d'une plage de cellules.

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;
Nous pouvons faire de même pour la suppression de lignes
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;

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 20 janvier 2014 atlantis

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 GetIsMerged permet de savoir si la sélection de cellule est fusionnée ou non.
La fonction merge, quand a elle, permet de basculer l'état de la sélection de fusionné à non fusionné.

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 20 janvier 2014 atlantis

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;

Mis à jour le 23 octobre 2015 SergioMaster

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.