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 de l'application > Recours aux fonctionnalités
        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 ?



Comment utiliser les fonctions intégrées d'Excel ?
Créé le 27/10/2004[haut]
auteur : Ricky81
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.

Variant vSheetFunction;
vSheetFunction = vMSExcel.OlePropertyGet("WorksheetFunction");
int res = vSheetFunction.OleFunction("Max", 3, 4);
lien : faq Comment exécuter une macro contenue dans un classeur ?
lien : faq Comment créer une nouvelle instance d'Excel ?
lien : faq Comment récupérer l'instance active d'Excel ?

Comment obtenir un nom de fichier avec la boite de dialogue ouvrir d'Excel ?
Créé le 27/10/2004[haut]
auteurs : Bidou, Ricky81
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 :

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);
Le résultat est un Variant, mais il est nécessaire de faire la distinction pour le mode de sélection multiple. En effet, dans ce cas, c'est un Variant de type tableau qui est renvoyé (même si un seul fichier est finalement sélectionné), lequel doit être traité différemment. Dans le cas où c'est le bouton Annuler qui a été cliqué, un Variant simple ayant pour valeur "False" est renvoyé.

Voici un exemple de code qui permet de traiter les 2 modes :

if(file.IsArray())
{
  for(int i=1 ; i<=file.ArrayHighBound(1) ; i++)
  {
    ShowMessage(file.GetElement(i));
  }
}
else
{
  ShowMessage(file);
}
Attention : Comme le composant TOpenDialog, cette boite de dialogue n'effectue aucune opération d'ouverture. Elle permet juste de sélectionner un ou plusieurs fichiers.

lien : faq Comment obtenir un nom de fichier avec la boite de dialogue enregistrer sous d'Excel ?
lien : faq Comment utiliser une boite de saisie Excel ?

Comment obtenir un nom de fichier avec la boite de dialogue enregistrer sous d'Excel ?
Créé le 27/10/2004[haut]
auteurs : Bidou, Ricky81
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 :

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);
Le résultat est un Variant valant en particulier "False" dans le cas d'un recours au bouton Annuler.

Attention : 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.

lien : faq Comment obtenir un nom de fichier avec la boite de dialogue ouvrir d'Excel ?
lien : faq Comment utiliser une boite de saisie Excel ?

Comment utiliser une boite de saisie Excel ?
Créé le 27/10/2004[haut]
auteurs : Bidou, Ricky81
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 :

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);
lien : faq Comment obtenir un nom de fichier avec la boite de dialogue ouvrir d'Excel ?
lien : faq Comment obtenir un nom de fichier avec la boite de dialogue enregistrer sous d'Excel ?

Comment lancer la recalculation lorsque celle ci n'est pas faite automatiquement ?
Créé le 27/10/2004[haut]
auteur : Ricky81
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 Variant vMSExcel :

vMSExcel.OleProcedure("Calculate");
lien : faq Comment définir le mode de recalcul d'Excel ?
lien : faq Comment créer une nouvelle instance d'Excel ?
lien : faq Comment récupérer l'instance active d'Excel ?

Comment récupérer le résultat d'une chaîne de caractères décrivant une opération ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons travailler à partir d'un Variant représentant l'instance d'Excel.

int res = vMSExcel.OleFunction("Evaluate", vOperation); 
// vOperation = "(3+4)*2" ou "=(3+4)*2" par exemple 
lien : faq Comment créer une nouvelle instance d'Excel ?
lien : faq Comment récupérer l'instance active d'Excel ?

Comment afficher à l'écran un classeur/feuille donné ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous devons travailler avec le classeur ou la feuille que nous souhaitons afficher.
Prenons l'exemple du classeur, défini par le Variant vWorkbook :

vWorkbook.OleProcedure("Activate");

Comment agir sur la fenêtre d'Excel pour minimiser/maximiser ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons travailler sur une instance d'Excel (Variant vMSExcel).

vMSExcel.OlePropertySet("WindowState", vValue);
La valeur vValue est à choisir parmi les constantes suivantes appartenant à la classe XlWindowState

xlMaximized = -4137
xlMinimized = -4140
xlNormal = -4143


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