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
- 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 ?
Travaillons directement sur le Variant représentant une plage de cellules.
Code c++ : | Sélectionner tout |
vRange.OlePropertySet("Name", "ricky81");
Code c++ : | Sélectionner tout |
1 2 | Variant vOtherRange; vOtherRange = vWorksheet.OlePropertyGet("Range", "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.
Code c++ : | Sélectionner tout |
1 2 3 | Variant vNames, vRange; vNames = vWorksheet.OlePropertyGet("Names"); vRange = vNames.OleFunction("Item", "ricky81").OlePropertyGet("RefersToRange") |
Nous allons pour cela travailler au niveau d'un Variant vRange représentant un plage de cellules.
Code c++ : | Sélectionner tout |
1 2 | Variant vNewRange; vNewRange = vRange.OlePropertyGet("Resize", rowsize, columnsize); |
Cette plage est obtenue en partant de la cellule supérieure gauche de la plage initiale.
Nous allons pour cela travailler au niveau d'un Variant vRange représentant une plage de cellules.
Code c++ : | Sélectionner tout |
1 2 | Variant vNewRange; vNewRange = vRange.OleProcedure("Offset", rowoffset, columnoffset); |
Agissons au niveau du Variant correspondant à la plage de cellules cible.
Code c++ : | Sélectionner tout |
1 2 | vRange.OleProcedure("Copy", vCell); // le Variant vCell représente le coin supérieur gauche destination |
Nous allons travailler au niveau de l'instance Excel, représentée par le VariantvMSExcel, et faire appel aux fonctions Union et Intersect avec pour paramètres des Variants représentant des cellules ou groupes de cellules.
Union :
Code c++ : | Sélectionner tout |
1 2 | Variant vRange; vRange = vMSExcel.OleFunction("Union", vCell1, vCell2, vCell3); |
Code c++ : | Sélectionner tout |
vRange = vMSExcel.OleFunction("Intersect", vRange1, vRange2, vRange3);
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é.
Code c++ : | Sélectionner tout |
1 2 | Variant vSelection; vSelection = vRange.OlePropertyGet("Address"); |
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.
Code c++ : | Sélectionner tout |
1 2 | Variant vRegion; vRegion = vRange.OlePropertyGet("CurrentRegion"); |
Nous allons travailler au niveau d'un Variant vRange représentant un plage de cellules.
Voici quelques exemples :
- Des cellules vides :
Code c++ : | Sélectionner tout |
1 2 | Variant vBlankCells; vBlankCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeBlanks); |
Code c++ : | Sélectionner tout |
1 2 | Variant vTextCells; vTextCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeConstants, xlTextValues); |
Code c++ : | Sélectionner tout |
1 2 | Variant vNumbersCells; vNumbersCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeConstants, xlNumbers); |
Code c++ : | Sélectionner tout |
1 2 | Variant vFormulaCells; vFormulaCells = vRange.OlePropertyGet("SpecialCells", xlCellTypeFormulas); |
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 :
Code c++ : | Sélectionner tout |
1 2 3 4 | //on sélectionne 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"); |
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 deux cellules.
Une fois cela fait, il faut unir les sélections grace à la fonction Union.
Il suffit ensuite d'appeler la fonction Select :
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 | 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"); |
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.