Insérer des formules dans un fichier Excel
bonjour,
Afin de faire des comparatifs de fichiers XML j'utilise plusieurs transformations.
A la fin de mes traitements j'ai sous forme CSV l'ensemble des valeurs et 3 paramètres dans une table et ce pour 9 fichiers.
De ce fait je met le fichier CSV au format XLXS.
et pour faire un comparatif rapide j'ai 4 formules à appliquer dans les colonnes A : D
=SI(NB.SI(X2:AF2;DECALER(W2;0;EQUIV(RECHERCHE(2,1;1/(X2:AF2<>"");X2:AF2);X2:AF2);1;1))=9-NB.VIDE(X2:AF2)=FAUX;"DIFF";"")
=SI(NB.SI(F2:N2;DECALER(E2;0;EQUIV(RECHERCHE(2,1;1/(F2:N2<>"");F2:N2);F2:N2);1;1))=9-NB.VIDE(F2:N2)=FAUX;"DIFF";"")
=SI(NB.SI(O2:W2;MOYENNE(O2:W2))=0;"DIFF";NB.SI(O2:W2;MOYENNE(O2:W2)))
=SI(NB.VIDE(F2:AF2)=0;"";"PARTIEL")
et la ca se complique car je n'arrive pas a insérer de formule …
j'arrive a écrire dans une cellule, mais dès qu'il y a le signe "=" j'ai le message :
Exception de HRESULT : 0x800A03EC
Au caractère C:\data\convertCSVtoXLSX.ps1:32 : 1
+ $excel.cells.item(2,3) ="=NB.SI(E83:H83;1)"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (: ) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
j'ai essayé les ^,",',\ devant mon signe egal et rien a faire …
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #Define locations and delimiter
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$csv = "$varCheminRepertoireScript\analyse.csv" #Location of the source file
$xlsx = "$varCheminRepertoireScript\analyse2.xlsx" #Desired location of output
$delimiter = ";" #Specify the delimiter used in the file
# Create a new Excel workbook with one empty sheet
$excel = New-Object -ComObject excel.application
$workbook = $excel.Workbooks.Add(1)
$worksheet = $workbook.worksheets.Item(1)
# Build the QueryTables.Add command and reformat the data
$TxtConnector = ("TEXT;" + $csv)
$Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
$query = $worksheet.QueryTables.item($Connector.name)
$query.TextFileOtherDelimiter = $delimiter
$query.TextFileParseType = 1
$query.TextFileColumnDataTypes = ,1 * $worksheet.Cells.Columns.Count
$query.AdjustColumnWidth = 1
# Execute & delete the import query
$query.Refresh()
$query.Delete()
#code OK
$excel.cells.item(2,2) = "site"
#ERREURS
$excel.cells.item(2,3) ="=NB.SI(E83:H83;1)"
#ERREURS
$excel.cells.item(2,3).Formula ="=NB.SI(E83:H83;1)"
# Save & close the Workbook as XLSX.
$Workbook.SaveAs($xlsx,51)
$excel.Quit() |
je suis au début de mes soucis car je dois ensuite faire en sorte que mes formules s'incrémentent
=SI(NB.SI(X2:AF2;DECALER(W2;0;EQUIV(RECHERCHE(2,1;1/(X2:AF2<>"");X2:AF2);X2:AF2);1;1))=9-NB.VIDE(X2:AF2)=FAUX;"DIFF";"")
et ce pour le nombre de ligne de mon fichier excel ..
d'avance merci pour votre aide éclairée