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 : Sélectionner tout - Visualiser dans une fenêtre à part
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