Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

C++

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > MS Office > Excel > Gestion des feuilles
        Comment récupérer l'ensemble des feuilles d'un classeur ?
        Comment récupérer une feuille à partir de son nom ?
        Comment récupérer une feuille à partir de sa position dans le classeur ?
        Comment ajouter une nouvelle feuille à un classeur ?
        Comment modifier le nom d'une feuille ?
        Comment déplacer une feuille ?
        Comment protéger ou déprotéger une feuille ?
        Comment supprimer une feuille ?
        Comment créer une nouvelle feuille (nouveau classeur) à partir d'une feuille d'un classeur (copie) ?
        Comment dupliquer une feuille au sein d'un classeur ?
        Comment déterminer la zone utile ou le nombre de lignes/colonnes utiles dans ma feuille ?
        Comment savoir si la suppression de lignes ou de colonnes est permise ?
        Comment savoir si l'insertion de lignes ou de colonnes est permise ?
        Comment savoir si l'insertion d'un lien hypertexte est permise ?
        Comment effacer la grille d'une feuille Excel ?
        Comment dessiner un objet sur une feuille ?
        Comment figer/libérer les volets sur une feuille ?
        Comment connaitre le nombre de feuilles d'un classeur ?
        Comment recopier le contenu d'une feuille vers une autre feuille ?
        Comment connaitre le nombre de feuilles du classeur sur lequel on travaille ?



Comment récupérer l'ensemble des feuilles d'un classeur ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons récupérer cet ensemble sous la forme d'une propriété d'un objet faisant office de classeur.

Variant vWorksheets;
// vXLWorkbook est de type Variant
vWorksheets = vXLWorkbook.OlePropertyGet("Worksheets");
lien : faq Comment récupérer un classeur dans un objet ?

Comment récupérer une feuille à partir de son nom ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons travailler directement sur le classeur concerné :

Variant vWorksheet;
// vXLWorkbook est de type Variant
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", vWsName); 
// vWsName est un Variant initialisé au nom de la feuille
lien : faq Comment récupérer une feuille à partir de sa position dans le classeur ?
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?

Comment récupérer une feuille à partir de sa position dans le classeur ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons travailler directement sur le classeur concerné :

Variant vWorksheet;
// vXLWorkbook est de type Variant
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", vWsPos); 
// vWsName est un Variant initialisé à la position (commence à 1)
lien : faq Comment récupérer une feuille à partir de son nom ?
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?

Comment ajouter une nouvelle feuille à un classeur ?
Mise à jour le 06/12/2006[haut]
auteurs : Ricky81, blondelle
Nous allons exécuter la fonction Add sur le Variant correspondant à l'ensemble des feuilles.

Variant vWorksheet;
vWorksheet = vWorksheets.OleProdedure("Add");
Excel donnera pour nom FeuilI (cas de la version française) où I est le plus petit nombre tel que FeuilI n'existe pas encore. La feuille sera placée en première position.

lien : faq Comment récupérer l'ensemble des feuilles d'un classeur ?

Comment modifier le nom d'une feuille ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Il suffit pour cela d'agir sur la propriété Name d'un Variant correspondant à la feuille.

// vWsName est un Variant initialisé au nouveau nom de la feuille
vWorksheet.OlePropertySet("Name", vWsName);
lien : faq Comment récupérer une feuille à partir de son nom ?

Comment déplacer une feuille ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Travaillons sur le Variant correspondant à la feuille.

// vSheet est un Variant correspondant à la feuille avant laquelle notre feuille doit être plaçée
vWorksheet.OleProcedure("Move", vSheet);
Exemple :

Variant vWorksheet1, vWorksheet3;
vWorksheet3 = vXLWorkbook.OlePropertyGet("Worksheets", 3);
vWorksheet1 =  vXLWorkbook.OlePropertyGet("Worksheets", 1);
vWorksheet3.OleProcedure("Move", vWorksheet1);
Nous déplaçons la 3ème feuille en la mettant en première position.

lien : faq Comment récupérer une feuille à partir de sa position dans le classeur ?

Comment protéger ou déprotéger une feuille ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons travailler sur le Variant vWorksheet correspondant à une feuille.

vWorksheet.OleProcedure("Protect", "motdepasse", true, true, true, true);
Les 4 booléens correspondent respectivement aux paramètres 'DrawingObjects', 'Contents', 'Scenarios' et 'UserInterfaceOnly'. Il est possible d'affiner la protection avec des paramètres facultatifs trop nombreux pour être décrits ici.

Pour ôter la protection :

vWorksheet.OleProcedure("UnProtect", "motdepasse");
lien : faq Comment protéger ou déprotéger un classeur ?
lien : faq Comment récupérer une feuille à partir de son nom ?
lien : faq Comment récupérer une feuille à partir de sa position dans le classeur ?

Comment supprimer une feuille ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Agissons au niveau du Variant correspondant à la feuille en question.

vWorksheet.OleFunction("Delete");
lien : faq Comment récupérer une feuille à partir de son nom ?
lien : faq Comment récupérer une feuille à partir de sa position dans le classeur ?

Comment créer une nouvelle feuille (nouveau classeur) à partir d'une feuille d'un classeur (copie) ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Il nous faut travailler au niveau d'une feuille, par exemple définie par le Variant vWorksheet.

vWorksheet.OleFunction("Copy");
Cette fonction renvoie un booléen.


Comment dupliquer une feuille au sein d'un classeur ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Il nous faut travailler au niveau d'une feuille, par exemple celle définie par le Variant vWorksheet.

// la feuille que l'on souhaite précéder est représentée par le Variant vSheetBefore
vWorksheet.OleFunction("Copy", vSheetBefore); 
Cette fonction renvoie un booléen.


Comment déterminer la zone utile ou le nombre de lignes/colonnes utiles dans ma feuille ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Plaçons-nous au niveau d'une feuille qui serait définie par le Variant vWorksheet.
Le code suivant permet de récupérer un Variant correspondant à la plage de cellules utile.

vUsedRange = vWorksheet.OlePropertyGet("UsedRange");
Il est après par exemple possible de compter le nombre de lignes :

Variant vLines;
vLines = vUsedRange.OlePropertyGet("Rows");
int i = vLines.OlePropertyGet("Count");
ou le nombre de colonnes :

Variant vCols;
vCols = vUsedRange.OlePropertyGet("Columns");
int i = vCols.OlePropertyGet("Count");
lien : faq Comment accéder à une cellule définie au format Excel (ex. A1 ou L1C1) ?
lien : faq Comment récupérer toutes les cellules d'une feuille ?

Comment savoir si la suppression de lignes ou de colonnes est permise ?
Créé le 08/12/2004[haut]
auteur : Superstivix
Nous allons travailler sur une feuillle, représentée par le Variant vWorksheet.
Pour accéder à cette information, il faut interroger l'objet Protection de cette feuille :

bool supprLignePermis, supprColonnePermis;
// vWorksheet est de type Variant
supprLignePermis = vWorksheet.OlePropertyGet("Protection").OlePropertyGet("AllowDeletingRows");
supprColonnePermis =  vWorksheet.OlePropertyGet("Protection").OlePropertyGet("AllowDeletingColumns");
lien : faq Comment insérer ou supprimer une cellule ?

Comment savoir si l'insertion de lignes ou de colonnes est permise ?
Créé le 08/12/2004[haut]
auteur : Superstivix
Nous allons travailler sur une feuillle, représentée par le Variant vWorksheet.
Pour accéder à cette information, il faut interroger l'objet Protection de cette feuille :

bool insertLignePermis, insertColonnePermis;
// vWorksheet est de type Variant
insertLignePermis = vWorksheet.OlePropertyGet("Protection").OlePropertyGet("AllowInsertingRows");
insertColonnePermis =  vWorksheet.OlePropertyGet("Protection").OlePropertyGet("AllowInsertingColumns");
lien : faq Comment insérer ou supprimer une cellule ?

Comment savoir si l'insertion d'un lien hypertexte est permise ?
Créé le 08/12/2004[haut]
auteur : Superstivix
Nous allons travailler sur une feuillle, représentée par le Variant vWorksheet.
Pour accéder à cette information, il faut interroger l'objet Protection de cette feuille :

bool insertPermis;
// vWorksheet est de type Variant
insertPermis = vWorksheet.OlePropertyGet("Protection").OlePropertyGet("AllowInsertingHyperlinks");

Comment effacer la grille d'une feuille Excel ?
Créé le 10/12/2007[haut]
auteur : blondelle
Il est possible d'effacer la grille de fond d'une feuille Excel.

// on efface la grille de la feuille courante
vMSExcel.OlePropertyGet("ActiveWindow").OlePropertySet("DisplayGridlines",false);
// on affiche la grille
vMSExcel.OlePropertyGet("ActiveWindow").OlePropertySet("DisplayGridlines",true);

Comment dessiner un objet sur une feuille ?
Créé le 10/12/2007[haut]
auteur : blondelle
Exemple de 2 carrés l'un dans l'autre :

// vXLWorkbook est un Variant qui représente le classeur
// (msoShapeBevel = 15)
Variant vLigne1;
// on dessine sur la première feuille
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
vLigne1 = vWorksheet.OlePropertyGet("Shapes");
vLigne1.OleProcedure("AddShape", 15,  201.6, 269.4, 18.6, 18.6);

Le code complet qui dessine un trait.

On peut changer l'épaisseur, la couleur du trait, et rendre le trait visible ou invisible.

Variant vLine;
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
// pour les donnees (1, 1, 200, 100) il faut lire X, Y, X1, Y1
// X, Y point de depart de la ligne X1, Y1 point d'arrivee de la ligne
vLine = vWorksheet.OlePropertyGet("Shapes").OleFunction("AddLine", 1, 1, 200,100);
vLine.OlePropertyGet("Line").OlePropertySet("Weight", 8); // epaisseur de la ligne
vLine.OlePropertyGet("Line").OlePropertyGet("ForeColor").OlePropertySet("SchemeColor", 22); // couleur de la ligne
vLine.OlePropertyGet("Line").OlePropertySet("Visible", false);
vLine.OlePropertyGet("Line").OlePropertySet("Visible", true);

Comment figer/libérer les volets sur une feuille ?
Créé le 10/12/2007[haut]
auteur : blondelle
Pour figer/libérer les volets, il faut au préalable sélectionner la/les cellule(s), puis définir la propriété FreezePanes.

// vMSExcel représente l'instance Excel
Variant vWorksheet, vRange;
// on selectionne la première feuille
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
// on selectionne la cellule qui sert a positionner les volets
vRange = vWorksheet.OlePropertyGet("Range", "B4");
// on selectionne la cellule
vRange.OleProcedure("Select");
// soit on fige soit on libere les volets
vMSExcel.OlePropertyGet("ActiveWindow").OlePropertySet("FreezePanes", true); 
// pour liberer les volets remplacer "true" par "false"

Comment connaitre le nombre de feuilles d'un classeur ?
Créé le 10/12/2007[haut]
auteur : blondelle
Il suffit simplement d'interroger la propriété Count sur l'objet correspondant à l'ensemble des feuilles.

// vXLWorkbook représente un classeur
Variant vWorksheets;
vWorksheets = vXLWorkbook.OlePropertyGet("Worksheets");
int nb_de_feuilles = vWorksheets.OlePropertyGet("Count");

Comment recopier le contenu d'une feuille vers une autre feuille ?
Créé le 10/12/2007[haut]
auteur : blondelle
Ce code copie une feuille, ouvre un nouveau classeur renomme la feuille du nouveau classeur, colle la copie et désélectionne les feuilles de chaque classeur.
Par défaut Excel crée les feuilles avec le nom Feuil1, Feuil2, ... que l'on peut renommer, mais qui conserve toujours son rang dans la classification. Nous l'écrirons donc en OLE ("Worksheets", 1) ou ("Worksheets", "toto").
Il en est de même pour les classeurs.

Le Variant vMSExcel représente l'application Excel.

Variant vXLWorkbooks, vXLWorkbook, vWorksheet;
// l'ensemble des classeurs
vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
// on selectionne toute la feuille du classeur 1 et on la copie
vXLWorkbook = vMSExcel.OlePropertyGet("Workbooks", 1);
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1); // ici on peut remplacer "1" par le nom de la feuille "ma_feuille"
vWorksheet.OleProcedure("Select");
vWorksheet.OlePropertyGet("Cells").OleProcedure("Select");
vMSExcel.OlePropertyGet("Selection").OlePropertyGet("Copy");

// on cree un nouveau classeur
vXLWorkbooks.OleProcedure("Add");
vWorksheet = vMSExcel.OlePropertyGet("ActiveSheet");

// on renomme la feuille du nouveau classeur
vWorksheet.OlePropertySet("Name", "SAUVEGARDE_2");

// on recopie le contenu dans SAUVEGARDE_2
vWorksheet.OleProcedure("Select");
vWorksheet.OlePropertyGet("Cells").OleProcedure("Select");
vMSExcel.OlePropertyGet("ActiveSheet").OleProcedure("Paste");

// on deselectionne la feuille SAUVEGARDE_2 du nouveau classeur
vMSExcel.OlePropertySet("CutCopyMode", false);
vWorksheet.OlePropertyGet("Range", "A1").OleProcedure("Select");

// on active le classeur 1
vXLWorkbook = vMSExcel.OlePropertyGet("Workbooks", 1); // ici on peut remplacer "1" par le nom du classeur "mon_classeur"
vXLWorkbook.OleProcedure("Activate");

// on active la feuille 1 du classeur 1
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1); // ici on peut remplacer "1" par le nom de la feuille "ma_feuille
vWorksheet = vMSExcel.OlePropertyGet("ActiveSheet");

// on deselectionne la feuille
vWorksheet.OleProcedure("Select");
vWorksheet.OlePropertyGet("Range", "A1").OleProcedure("Select");

Comment connaitre le nombre de feuilles du classeur sur lequel on travaille ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez

Cette procédure permet de connaitre le nombre de feuilles du classeur actif.


int Nb_feuilles = vXLWorkbook.OlePropertyGet("Sheets").OlePropertyGet("Count");


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

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 © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.

Contacter le responsable de la rubrique C++

Partenaire : Hébergement Web