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 cellules > Plages de sélection
        Comment associer un nom à une plage de cellule ?
        Comment récupérer la cible en fonction du nom ?
        Comment agrandir ou rétrécir une plage de cellules ?
        Comment décaler une plage de cellules ?
        Comment faire une copie d'une plage de cellules ?
        Comment obtenir l'union ou l'intersection de plusieurs groupes de cellules ?
        Comment récupérer la définition d'une plage d'adresses au format Excel ?
        Comment récupérer la plus grande zone remplie d'une plage de cellules ?
        Comment récupérer des plages particulières ?
        Comment sélectionner une plage de cellules ?
        Comment sélectionner plusieurs plages de cellules ?



Comment associer un nom à une plage de cellule ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Travaillons directement sur le Variant représentant une plage de cellules.

vRange.OlePropertySet("Name", "ricky81");
Nous pouvons désormais retrouver notre plage par son nom au niveau du Variant vWorksheet correspondent à la feuille sur laquelle nous travaillons.

Variant vOtherRange;
vOtherRange = vWorksheet.OlePropertyGet("Range", "ricky81");
lien : faq Comment récupérer la cible en fonction du nom ?
lien : faq Comment récupérer une cellule à partir de son adresse ?

Comment récupérer la cible en fonction du nom ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Supposons qu'une cellule ou un groupe de cellule soit associé à un nom (en l'occurrence "ricky81"). Nous allons chercher ici à récupérer un Variant sur ce groupe de cellules.
Travaillons au niveau de la feuille concernée représentée par le Variant vWorksheet.

Variant vNames, vRange;
vNames = vWorksheet.OlePropertyGet("Names");
vRange = vNames.OleFunction("Item", "ricky81").OlePropertyGet("RefersToRange")
lien : faq Comment récupérer une cellule à partir de son adresse ?

Comment agrandir ou rétrécir une plage de cellules ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons pour cela travailler au niveau d'un Variant vRange représentant un plage de cellules.

Variant vNewRange;
vNewRange = vRange.OlePropertyGet("Resize", rowsize, columnsize);
Les variables rowsize et columnsize sont les tailles attendues pour la nouvelle plage.
Cette plage est obtenue en partant de la cellule supérieure gauche de la plage initiale.

lien : faq Comment décaler une plage de cellules ?

Comment décaler une plage de cellules ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons pour cela travailler au niveau d'un Variant vRange représentant une plage de cellules.

Variant vNewRange;
vNewRange = vRange.OleProcedure("Offset", rowoffset, columnoffset);
Les variables rowoffset et columnoffset sont les déplacements attendus par rapport à la plage initiale.

lien : faq Comment agrandir ou rétrécir une plage de cellules ?

Comment faire une copie d'une plage de cellules ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Agissons au niveau du Variant correspondant à la plage de cellules cible.

vRange.OleProcedure("Copy", vCell);
// le Variant vCell représente le coin supérieur gauche destination

Comment obtenir l'union ou l'intersection de plusieurs groupes de cellules ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons travailler au niveau de l'instance Excel, représentée par le Variant vMSExcel, et faire appel aux fonctions Union et Intersect avec pour paramètres des Variants représentant des cellules ou groupes de cellules.

Union :

Variant vRange;
vRange = vMSExcel.OleFunction("Union", vCell1, vCell2, vCell3);
Intersection :

vRange = vMSExcel.OleFunction("Intersect", vRange1, vRange2, vRange3);
Remarque : il est possible de rajouter d'autres cellules/groupes de cellules en paramètre, la limite étant fixée à 30 paramètres.

lien : faq Comment accéder à une cellule définie au format Excel (ex. A1 ou L1C1) ?
lien : faq Comment accéder à une cellule à partir de ses coordonnées ?
lien : faq Comment accéder à un groupe de cellules défini au format Excel (ex. A1:B2 ou L1C1:L2C2) ?
lien : faq Comment accéder à un groupe de cellules délimité par 2 cellules ?

Comment récupérer la définition d'une plage d'adresses au format Excel ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Il est possible de récupérer, au format en cours utilisé par l'application Excel, l'adresse d'une cellule ou plage de cellules.
Prenons l'exemple d'une plage de cellules matérialisée par le Variant vRange que nous aurons précédemment initialisé.

Variant vSelection;
vSelection = vRange.OlePropertyGet("Address");
Le Variant vSelection contient alors la chaîne de caractères correspondant à la zone en question. Un exemple de retour pourrait par exemple être "$A$1:$B$2".

lien : faq Comment accéder à une cellule définie au format Excel (ex. A1 ou L1C1) ?
lien : faq Comment accéder à une cellule à partir de ses coordonnées ?
lien : faq Comment accéder à un groupe de cellules défini au format Excel (ex. A1:B2 ou L1C1:L2C2) ?
lien : faq Comment accéder à un groupe de cellules délimité par 2 cellules ?

Comment récupérer la plus grande zone remplie d'une plage de cellules ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons pour cela travailler au niveau d'un Variant vRange représentant une plage de cellules.

Le code suivant renvoie la plage en cours dans laquelle est l'objet Range. On entend par plage en cours, l'ensemble des cellules limitées par une combinaison de lignes et de colonnes vides en partant du coin supérieur gauche défini par la plage.

Variant vRegion;
vRegion = vRange.OlePropertyGet("CurrentRegion");
lien : faq Comment déterminer la zone utile ou le nombre de lignes/colonnes utiles dans ma feuille ?

Comment récupérer des plages particulières ?
Créé le 08/12/2004[haut]
auteur : Ricky81
Nous allons travailler au niveau d'un Variant vRange représentant un plage de cellules.
Voici quelques exemples :

- Des cellules vides :

Variant vBlankCells;
vBlankCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeBlanks);
- Des cellules constantes contenant du texte :

Variant vTextCells;
vTextCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeConstants, xlTextValues);
- Des cellules constantes contenant une valeur numérique :

Variant vNumbersCells;
vNumbersCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeConstants, xlNumbers);
- Des cellules contenant une formule :

Variant vFormulaCells;
vFormulaCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeFormulas);
Pour davantage d'éléments, les différentes valeurs possibles pour le second et le troisième paramètre sont respectivement des constantes des classes XlCellType et XlSpecialCellsValue.


Comment sélectionner une plage de cellules ?
Créé le 10/12/2007[haut]
auteur : blondelle
Pour sélectionner une plage de cellules, il faut au préalable avoir définit la plage, par exemple en délimitant la zone avec 2 cellules.
Il suffit ensuite d'appeler la fonction Select :

//on selectionne la plage de cellules délimitées par vCell1 et vCell2
// vCell1 et vCell2 sont des Variant représentant des cellules
// vWorksheet est un Variant représentant une feuille
vWorksheet.OlePropertyGet("Range", vCell1, vCell2).OleFunction("Select");

Comment sélectionner plusieurs plages de cellules ?
Créé le 22/11/2010[haut]
auteur : blondelle
Pour sélectionner plusieurs plages de cellules, il faut au préalable avoir défini les plages, par exemple en délimitant la zone avec 2 cellules.
Une fois cela fait, il faut unir les sélections grace à la fonction Union.
Il suffit ensuite d'appeler la fonction Select :
vWorksheet.OleProcedure("Activate");
 
// définition des plages
// vMSExcel.OlePropertyGet("Range", "C5:D9,G9:H16,B14:D18");
//Variant Aire1 = vWorksheet.OlePropertyGet("Range", "A1:B2");
Variant Aire1 = vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells",1,1),vWorksheet.OlePropertyGet("Cells",2,2));
//Variant Aire2 = vWorksheet.OlePropertyGet("Range", "C3:D4");
Variant Aire2 = vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells",3,3),vWorksheet.OlePropertyGet("Cells",4,4));
//Variant Aire3 = vWorksheet.OlePropertyGet("Range", "B8:F14");
Variant Aire3 = vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells",8,2),vWorksheet.OlePropertyGet("Cells",14,6));
Variant mesMultiAires =  vMSExcel.OleFunction("Union", Aire1, Aire2, Aire3);
 
// sélection des plages
mesMultiAires.OleProcedure("Select");
 
// on récupère le NB de lignes et de colonnes
Variant lign1 = Aire1.OlePropertyGet("Rows").OlePropertyGet("Count");
Variant colon1 = Aire1.OlePropertyGet("Columns").OlePropertyGet("Count");
Variant lign2 = Aire2.OlePropertyGet("Rows").OlePropertyGet("Count");
Variant colon2 = Aire2.OlePropertyGet("Columns").OlePropertyGet("Count");
Variant lign3 = Aire3.OlePropertyGet("Rows").OlePropertyGet("Count");
Variant colon3 = Aire3.OlePropertyGet("Columns").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