Bonjour à tous,
J'ai une application Delphi 2010 qui envoie des données dans un fichier Excel.
Jusque la pas de problème. Pour envoyer les données, j'utilise les fonctions de pilotage d'Excel par Ole.
1 2 3 4 5 6 7 8
| Procedure Tform1.XLS_Cellule(vXLRange, valeur: String);
Begin
If NOT VarIsNull(vXLRange) and (vXLRange <> '')
then Begin
vXLCell := vXLWorksheet.Range[vXLRange];
vXLCell.Value := valeur;
end; |
Si j'insère un sous total (SUM) en utilisant la fonction ci-dessus, ça marche :
XLS_Cellule( 'D10', '=SUM(D1:D9)' );
Par contre si je veux insérer un sous-total avec des critères et en utilisant le même code :
XLS_Cellule( 'D10', '=SUMIF(A1:A9;A10;D1:D9)' );
ça ne marche pas, j'obtient une erreur OLE automation.
Si je remplace =SUMIF par SUMIF
XLS_Cellule( 'D10', 'SUMIF(A1:A9;A10;D19)' );
Dans le fichier Excel, la cellule D10 contient SUMIF(A1:A9;A10;D19)
Si, dans Excel, j'ajoute manuellement le = devant le SUMIF, ça marche et ça calcule bien mes sous-totaux.
Quelqu'un a t il une idée sur le pouquoi je ne peux pas envoyer directement dans Excel '=SUMIF(A1:A9;A10;D19)' sans avoir une erreur Ole automation ?
S'il n'y a pas de solution directe, est il possible de lancer depuis Delphi, une commande qui remplace tous les SUMIF( par =SUMIF( ?
J'ai essayé de lancer la commande
vMSExcel.Replace('SUMIF(' , 'SUMIF', '=SUMIF');
mais j'ai un message d'erreur me disant qu'il manque des paramètres. Je me suis appuyé sur le lien suivant :
http://www.techonthenet.com/excel/fo...eplace_vba.php
In Microsoft Excel, the REPLACE function replaces a sequence of characters in a string with another set of characters. Please note that the worksheet version of the REPLACE function has different syntax.
Syntax
The syntax for the REPLACE function is:
Replace ( string1, find, replacement, [start, [count, [compare]]] )
string1 is the string to replace a sequence of characters with another set of characters.
find is the string that will be searched for in string1.
replacement will replace find in string1.
Merci d'avance,
Wilco
Partager