Question PowerShell et Excel (FormulaR1C1)

Plus d'informations
il y a 16 ans 3 mois #5815 par Besançon Ludovic
Bonjour,

J'utilisais pas mal Excel et vba pour creer des classeurs.
J'essaie de le faire directement à partir de powershell.

Dans ma macro excel j'avais :
[code:1]myWKS.Cells(1,3).FormulaR1C1 = \"=RC[-2]+RC[-1]\"[/code:1]
Dans powershell j'ai mis :
[code:1]$xls = New-Object -comobject Excel.Application
$xls.Visible = $True
$myWB = $xls.Workbooks.Add()
$myWS = $myWB.Worksheets.Item(1)

$myWS.Cells.Item(1,1) = '1'
$myWS.Cells.Item(1,2) = '2'
$myWS.Cells.Item(1,3).FormulaR1C1 = '=RC[-1]+RC[-2]'[/code:1]

J'obtiens une erreur :

Exception setting \"FormulaR1C1\": \"Exception from HRESULT: 0x800A03EC\"
At C:\Outils\Exploit\Bin\Excel-Test.ps1:8 char:23
+ $myWS.Cells.Item(1,3). <<<< FormulaR1C1 = '=RC[-1]+RC[-2]'
+ CategoryInfo : InvalidOperation: ( : ) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException

Si je n'utilise pas la propriété FormulaR1C1 j'obtiens l'erreur :

Exception setting \"Item\": \"Exception from HRESULT: 0x800A03EC\"
At C:\Outils\Exploit\Bin\Excel-Test.ps1:8 char:17
+ $myWS.Cells.Item <<<< (1,3) = '=RC[-1]+RC[-2]'
+ CategoryInfo : NotSpecified: ( : ) [], SetValueInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterParameterizedPropertySetValueTI


J'ai un moment suspecté un problème de Fançais/Anglais mais j'ai remplacé le R de Row par le L de Ligne mais rien n'y fait !

Merci de votre aide.

Ludovic.

Message édité par: Arnaud, à: 22/12/09 10:52

Message édité par: Arnaud, à: 22/12/09 10:53<br><br>Message édité par: Arnaud, à: 22/12/09 10:54

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 3 mois #5818 par Laurent Dardenne
Salut,
Si on saisis manuellement ta formule dans XL, on déclenche une erreur. Même si dans les options la notation de style R1C1 est activé. Avec une autre formule du type SQR il n'y a pas d'erreur.

Peut être que tes références sont erronées dans ce contexte ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 3 mois #5819 par Besançon Ludovic
Ta réponse m'a mis sur la voie.
C'est bien un prolème d'Anglais/Français.

La ligne doit être :
$myWS.Cells.Item(1,3).FormulaR1C1 = '=LC(-1)+RC(-2)'

En fait j'avais utilisé l'enregistreur de macro pour \&quot;connaître\&quot; ma formule.
Avec vba il faut parler anglais !
Avec powershell visiblement il faut parler en français.

A moins que cela ne cange avec les version d'Office ...
Je suis en Office 2003.

Merci de ton aide.

Ludovic.

PS : Quel est le nom de la propriété à changer pour passer de A1 à L1C1 ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 3 mois #5820 par Laurent Dardenne
Ludovic écrit:

Quel est le nom de la propriété à changer pour passer de A1 à L1C1 ?

Application.ReferenceStyle je crois.

Les valeurs de l'énumération XlReferenceStyle
[code:1]$xlA1 = 1
$xlR1C1 = 0xFFFFEFCAL # L pour type Long [/code:1]<br><br>Message édité par: Laurent Dardenne, à: 21/12/09 13:14

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.045 secondes
Propulsé par Kunena