FAQ C++ BuilderConsultez toutes les FAQ

Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe C++ Builder de Developpez.

Commentez cette FAQ : Commentez


SommaireOpenOfficeOpenOffice Gestion des feuilles (28)
précédent sommaire suivant
 

Voici comment obtenir le nombre de feuilles du classeur Calc:

La fonction GetCount permet d'obtenir le nombre de feuilles contenues dans le classeur.

Code c++ : Sélectionner tout
1
2
3
4
5
Variant vOOoMonClasseur; 
int vOOoNombreDeFeuilles; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoNombreDeFeuilles = vOOoMonClasseur.OleFunction("GetCount");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour protéger la feuille calc

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
// on protège la feuille 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// ("GetByIndex", 0) donne la feuille ici la 1er feuille 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0); 
vOOoMaFeuille.OleFunction("protect", "password");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment déprotéger une feuille calc

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
// on déprotège la feuille 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// ("GetByIndex", 0) donne la feuille ici la 1er feuille 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0); 
vOOoMaFeuille.OleFunction("Unprotect", "password");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment tester si une feuille est protégée calc

Code c++ : Sélectionner tout
1
2
3
4
Boolean vOOoprotect; 
  
// on teste si la feuille est protégée 
vOOoprotect = vOOoMaFeuille.OleFunction("Isprotected");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment rendre invisible ou visible une feuille calc
Les feuilles de calcul contiennent la propriété IsVisible qui permet d'afficher ou masquer la feuille dans le classeur.

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// ("GetByIndex", 0) représente la 1er feuille 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0); 
// on rend la feuille invisible 
vOOoMaFeuille.OlePropertySet("IsVisible", false); 
  
// on rend la feuille visible 
vOOoMaFeuille.OlePropertySet("IsVisible", true);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment accéder à une feuille Calc par son index dans ce cas on sélectionne la première feuille.

Code c++ : Sélectionner tout
1
2
3
4
5
6
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// ("GetByIndex", 0) représente la 1er feuille 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Toutes les QR suivantes sont basées sur une variable "MaFeuille" représentant une feuille du classeur ouvert.
On peut utiliser le nom de la feuille pour accéder à cette variable. Ce nom est celui qui apparaît dans l'onglet de la feuille (fonction GetByName) :

Code c++ : Sélectionner tout
1
2
3
4
5
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

On doit utiliser le nom de la feuille pour pouvoir la supprimer. Ce nom est celui qui apparaît dans l'onglet de la feuille.

Code c++ : Sélectionner tout
1
2
3
4
Variant vOOoMonClasseur; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMonClasseur.OleFunction("RemoveByName", "Feuille1");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment dupliquer une feuille Calc:

En utilisant la fonction CopyByName(Source, Copie, IndexCopie);
Source correspond au nom situé dans l'onglet de la feuille à copier
Copie correspond au nom de la nouvelle feuille qui va figurer dans l'onglet de cette feuille
IndexCopie correspond à la position de la nouvelle feuille créée

Code c++ : Sélectionner tout
1
2
3
4
5
6
Variant vOOoMonClasseur; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// "Feuille1" la feuille que l'on va déplacer 
// 3 va placer la feuille trois emplacements plus loin 
vOOoMonClasseur.OleFunction("copyByName", "Feuille1", 2);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment déplacer une feuille Calc:

En utilisant la fonction MoveByName(Feuille : string, NouvelIndex: integer);

Code c++ : Sélectionner tout
1
2
3
4
5
Variant vOOoMonClasseur; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// "Feuille1" la feuille que l'on va déplacer 
// 3 va positionner la feuille à l'emplacement 3 
vOOoMonClasseur.OleFunction("moveByName", "Feuille1", 3);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Comment ajouter une feuille dans mon classeur ?
La fonction InsertNewByName permet d'ajouter une feuille dans le classeur.
Function insertNewByName(Nom : string, index : integer);
La valeur de Index correspond à la position de la feuille dans le classeur

Code c++ : Sélectionner tout
1
2
3
4
5
6
Variant vOOoMonClasseur; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// "Nom_de_la_Nouvelle_Feuille", nom de la feuille que l'on va créer 
// 0 emplacement de la feuille créée 
vOOoMonClasseur.OleFunction("InsertNewByName", "Nom_de_la_Nouvelle_Feuille", 0);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment obtenir le nom d'une feuille Calc.

La méthode GetName permet d'obtenir le nom de chaque feuille :

Code c++ : Sélectionner tout
1
2
3
4
5
6
Variant vOOoMonClasseur; 
String vOOoNomDeLaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// 0 emplacement de la feuille dont on cherche le nom 
vOOoNomDeLaFeuille = vOOoMonClasseur.OleFunction("getByIndex", 0).OleFunction("GetName");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici comment renommer une feuille Calc

Pour modifier le nom qui apparaît dans l'onglet de la feuille il suffit de modifier la propriété Name de la feuille :

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
// ("GetByIndex", 0) 0 represente la 1er feuille 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0); 
vOOoMaFeuille.OlePropertySet("Name", "Nouveau_Nom_de_la_Feuille");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 c++ : 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
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
int vOOoresult; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoresult = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("GetType"); 
switch (vOOoresult) 
{ 
    case 0 : 
        ShowMessage("Cellule Vide"); 
        return; 
    case 1 : 
        ShowMessage("Cellule contenant un Nombre"); 
        return; 
    case 2 : 
        ShowMessage("Cellule contenant une chaine de caractère"); 
        return; 
    case 3 : 
        ShowMessage("Cellule contenant une formule"); 
        return; 
}

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour effectuer une copie d'une plage de cellules, 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éfini la cellule de destination
Maselection correspond à l'objet dans lequel nous avons défini la plage de cellules

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMaDestination; 
Variant vOOoMaPlage; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
  
vOOoMaDestination = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellAddress"); 
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress"); 
  
vOOoMaDestination.OlePropertySet("Sheet", 0); 
vOOoMaDestination.OlePropertySet("Column", 5); 
vOOoMaDestination.OlePropertySet("Row", 5); 
vOOoMaPlage.OlePropertySet("Sheet", 0); 
vOOoMaPlage.OlePropertySet("StartColumn", 0); 
vOOoMaPlage.OlePropertySet("StartRow", 0); 
vOOoMaPlage.OlePropertySet("EndColumn", 1); 
vOOoMaPlage.OlePropertySet("EndRow", 1); 
vOOoMaFeuille.OleFunction("CopyRange", vOOoMaDestination, vOOoMaPlage);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour effectuer un déplacement d'une plage de cellules, 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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMaPlage; 
Variant vOOoMaDestination; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMaDestination = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellAddress"); 
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress"); 
vOOoMaDestination.OlePropertySet("Sheet", 0); 
vOOoMaDestination.OlePropertySet("Column", 5); 
vOOoMaDestination.OlePropertySet("Row", 5); 
  
vOOoMaPlage.OlePropertySet("Sheet", 0); 
vOOoMaPlage.OlePropertySet("StartColumn", 0); 
vOOoMaPlage.OlePropertySet("StartRow", 0); 
vOOoMaPlage.OlePropertySet("EndColumn", 5); 
vOOoMaPlage.OlePropertySet("EndRow", 5); 
vOOoMaFeuille.OleFunction("moveRange", vOOoMaDestination, vOOoMaPlage);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Voici un exemple de fusion et d'annulation de fusion pour la plage de cellules A1:B1

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
if (vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("Getismerged")) 
{ 
    vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("merge", false); // ou false 
} 
else 
{ 
    vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("merge", true); // ou false 
}

La fonction GetIsMerged permet de savoir si la sélection de cellules 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 10 décembre 2007 atlantis blondelle pottiez

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éfini 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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMaPlage; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress"); 
vOOoMaPlage.OlePropertySet("Sheet", 0); 
vOOoMaPlage.OlePropertySet("StartColumn", 0); 
vOOoMaPlage.OlePropertySet("StartRow", 0); 
vOOoMaPlage.OlePropertySet("EndColumn", 5); 
vOOoMaPlage.OlePropertySet("EndRow", 5); 
vOOoMaFeuille.OleFunction("removeRange", vOOoMaPlage, 1);

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 Colonnes que vous voulez effacer

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMesColonnes; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMesColonnes = vOOoMaFeuille.OleFunction("GetColumns"); 
vOOoMesColonnes.OleFunction("removeByIndex", 1, 1);

Nous pouvons faire de même pour la suppression de lignes

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMesLignes; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows"); 
vOOoMesLignes.OleFunction("removeByIndex", 1, 1);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMaPlage; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress"); 
vOOoMaPlage.OlePropertySet("Sheet", 0); 
vOOoMaPlage.OlePropertySet("StartColumn", 0); 
vOOoMaPlage.OlePropertySet("StartRow", 0); 
vOOoMaPlage.OlePropertySet("EndColumn", 5); 
vOOoMaPlage.OlePropertySet("EndRow", 5); 
vOOoMaFeuille.OleFunction("insertCells", vOOoMaPlage, 1);

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 Colonnes que vous voulez insérer

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMesColonnes; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMesColonnes = vOOoMaFeuille.OleFunction("GetColumns"); 
vOOoMesColonnes.OleFunction("insertByIndex", 1, 1);

Nous pouvons faire de même pour l'insertion de lignes

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoMesLignes; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows"); 
vOOoMesLignes.OleFunction("insertByIndex", 1, 1);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
Variant vOOoCoreReflection; 
Variant vOOoMaPlage; 
  
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress"); 
vOOoMaPlage.OlePropertySet("Sheet", 0); 
vOOoMaPlage.OlePropertySet("StartColumn", 0); 
vOOoMaPlage.OlePropertySet("StartRow", 0); 
vOOoMaPlage.OlePropertySet("EndColumn", 5); 
vOOoMaPlage.OlePropertySet("EndRow", 5);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
int vOOoresult; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoresult = vOOoCellule.OleFunction("GetValue");

Ou directement en utilisant la feuille :

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
int vOOoresult; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoresult = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("GetValue");

Mis à jour le 10 décembre 2007 blondelle MFDev pottiez

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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoCellule.OleFunction("setPropertyValue", "IsCellBackgroundTransparent", false); 
vOOoCellule.OleFunction("setPropertyValue", "CellBackColor", 0xBBBBFF);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Les informations de protection sont stockées 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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
Variant vOOoprotection; 
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoprotection = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.util.CellProtection"); 
vOOoprotection.OlePropertySet("IsHidden", false); 
vOOoprotection.OlePropertySet("IsPrintHidden", true); 
vOOoprotection.OlePropertySet("IsLocked", true); 
vOOoprotection.OlePropertySet("IsFormulaHidden", true); 
vOOoCellule.OleFunction("setPropertyValue", "CellProtection", vOOoprotection);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour affecter une valeur à une cellule il suffit d'appeler la méthode SetValue.
Par l'intermédiaire d'une variable Cellule :

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoCellule.OleFunction("SetValue", 123);

Ou directement en utilisant la feuille :

Code c++ : Sélectionner tout
1
2
3
4
5
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetValue", 123);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour affecter une formule à une cellule :

Code c++ : Sélectionner tout
1
2
3
4
5
6
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetFormula", "=A2+B4");

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
Variant vOOoTextCursor; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoTextCursor = vOOoCellule.OleFunction("createTextCursor"); 
vOOoCellule.OleProcedure("insertString", vOOoTextCursor, "1er Ligne", false); 
vOOoCellule.OleProcedure("insertControlCharacter", vOOoTextCursor, 0, false); 
vOOoCellule.OleProcedure("insertString", vOOoTextCursor, "2em Ligne", false);

Liste des codes utilisables 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 10 décembre 2007 atlantis blondelle pottiez

Pour ajouter un hyperlien dans une cellule :

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoCellule; 
Variant vOOoTextCursor; 
Variant vOOoHyperlinkObj; 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoTextCursor = vOOoCellule.OleFunction("createTextCursor"); 
vOOoHyperlinkObj = vOOoDocument.OleFunction("createInstance", "com.sun.star.text.TextField.URL"); 
vOOoHyperlinkObj.OleFunction("setPropertyValue", "URL", http://www.developpez.com/"); 
vOOoHyperlinkObj.OleFunction("setPropertyValue", "Representation", "Visiter Developpez.com"); 
vOOoCellule.OleFunction("insertTextContent", vOOoTextCursor, vOOoHyperlinkObj, false);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

Pour modifier les propriétés des cellules, il faut utiliser la procédure setPropertyValue(paramètre, valeur)
Attention les paramètres et les valeurs 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 disponibles :
0 : Épaisseur non déterminée
50 : Fin
100 : Normal
150 : Gras
175 : Ultra Gras
200: Noir
2 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 disponibles :
- NONE :
- OBLIQUE :
- ITALIC
- DONTKNOW
- REVERSE_OBLIQUE
- REVERSE_ITALIC
CoreReflection.forName('com.sun.star.awt.FontSlant').getField('ITALIC').get();
3 Propriété : CharHeight de type Extended
Définit la taille de la police.
4 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 c++ : 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
Variant vOOoMonClasseur; 
Variant vOOoMaFeuille; 
Variant vOOoLocale; 
Variant vOOoCellule; 
Variant vOOoCoreReflection; 
Variant vOOoOpenOffice; 
  
vOOoCoreReflection = vOOoOpenOffice.OleFunction("createInstance","com.sun.star.reflection.CoreReflection"); 
  
  
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); 
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); 
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0); 
vOOoCellule.OleFunction("setPropertyValue", "CharFontName", "Arial"); 
vOOoCellule.OleFunction("setPropertyValue", "CharHeight", 10); 
vOOoCellule.OleFunction("setPropertyValue", "CharWeight", 150); 
vOOoCellule.OleFunction("setPropertyValue", "CharPosture", vOOoCoreReflection.OleFunction("forName", "com.sun.star.awt.FontSlant").OleFunction("getField", "ITALIC").OleFunction("get", "")); 
vOOoLocale = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.lang.Locale"); 
  
vOOoLocale.OlePropertySet("Country", "FR"); 
vOOoLocale.OlePropertySet("Language", "fr"); 
vOOoLocale.OlePropertySet("Variant", "fr"); 
  
vOOoCellule.OleFunction("setPropertyValue","CharLocale", vOOoLocale);

Mis à jour le 10 décembre 2007 atlantis blondelle pottiez

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 © 2020 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.