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 utiliser les fonctions intégrées d'Excel ?
- Comment obtenir un nom de fichier avec la boite de dialogue ouvrir d'Excel ?
- Comment obtenir un nom de fichier avec la boite de dialogue enregistrer sous d'Excel ?
- Comment utiliser une boite de saisie Excel ?
- Comment lancer la recalculation lorsque celle ci n'est pas faite automatiquement ?
- Comment récupérer le résultat d'une chaîne de caractères décrivant une opération ?
- Comment afficher à l'écran un classeur/feuille donné ?
- Comment agir sur la fenêtre d'Excel pour minimiser/maximiser ?
Cela se fait en 2 étapes : on récupère d'abord un Variant correspondant aux fonctions intégrées, puis on appelle une fonction particulière.
Nous partons bien entendu d'un Variant représentant notre instance d'Excel.
Code c++ : | Sélectionner tout |
1 2 3 | Variant vSheetFunction; vSheetFunction = vMSExcel.OlePropertyGet("WorksheetFunction"); int res = vSheetFunction.OleFunction("Max", 3, 4); |
Cela n'est pas possible en pilotage OLE Excel (impossible de récupérer l'ensemble sélectionné car l'appel se fait par une 'OleProcedure' qui par définition ne renvoie pas de résultat). Nous sommes obligés de passer par le composant TExcelApplication :
Code c++ : | Sélectionner tout |
1 2 3 4 5 | ExcelApplication1->Connect(); Variant file; Variant title = StringToOleStr("Titre"); // titre à donner à la boite de dialogue Variant multiselect = true; // selection multiple autorisée file = ExcelApplication1->GetOpenFilename(EmptyParam, EmptyParam, title, EmptyParam, multiselect, 0); |
Voici un exemple de code qui permet de traiter les 2 modes :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | if(file.IsArray()) { for(int i=1 ; i<=file.ArrayHighBound(1) ; i++) { ShowMessage(file.GetElement(i)); } } else { ShowMessage(file); } |
Cela n'est pas possible en pilotage OLE Excel (impossible de récupérer l'ensemble sélectionné car l'appel se fait par une 'OleProcedure' qui par définition ne renvoie pas de résultat). Nous sommes obligés de passer par le composant TExcelApplication :
Code c++ : | Sélectionner tout |
1 2 3 4 5 | ExcelApplication1->Connect(); Variant file; Variant initFile = StringToOleStr("E:\\Ricky\\classeur.xls"); // fichier sélectionné au départ Variant title = StringToOleStr("Titre"); // titre de la boite de dialogue file = ExcelApplication1->GetSaveAsFilename(initFile, EmptyParam, EmptyParam, title, EmptyParam, 0); |
Comme le composant TSaveDialog, cette boite de dialogue n'effectue aucune opération de sauvegarde. Elle permet juste de sélectionner un nom de fichier. |
Cela n'est pas possible en pilotage OLE Excel (impossible de récupérer l'ensemble sélectionné car l'appel se fait par une 'OleProcedure' qui par définition ne renvoie pas de résultat). Nous sommes obligés de passer par le composant TExcelApplication :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | ExcelApplication1->Connect(); Variant prompt = StringToOleStr("Texte"); // texte de la boite de saisie Variant title = StringToOleStr("Titre"); // titre de la boite de saisie Variant def = StringToOleStr("def"); // valeur par défaut // positionnement Variant left = 50; Variant top = 100; Variant answer; answer = ExcelApplication1->InputBox(prompt, title, def, left, top, EmptyParam, EmptyParam, EmptyParam, 0); |
Il est possible de faire ceci pour l'ensemble de l'application, un classeur, une feuille, ou même un groupe de cellules.
Voyons un exemple pour l'application représentée par le VariantvMSExcel :
Code c++ : | Sélectionner tout |
vMSExcel.OleProcedure("Calculate");
Nous allons travailler à partir d'un Variant représentant l'instance d'Excel.
Code c++ : | Sélectionner tout |
1 2 | int res = vMSExcel.OleFunction("Evaluate", vOperation); // vOperation = "(3+4)*2" ou "=(3+4)*2" par exemple |
Nous devons travailler avec le classeur ou la feuille que nous souhaitons afficher.
Prenons l'exemple du classeur, défini par le VariantvWorkbook :
Code c++ : | Sélectionner tout |
vWorkbook.OleProcedure("Activate");
Nous allons travailler sur une instance d'Excel (VariantvMSExcel).
Code c++ : | Sélectionner tout |
vMSExcel.OlePropertySet("WindowState", vValue);
Code c++ : | Sélectionner tout |
1 2 3 | xlMaximized = -4137 xlMinimized = -4140 xlNormal = -4143 |
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.