Page 1 sur 1

[R] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 09:43
par aulus
Bonjour,

Mon programme faisant appel au fichier Include <Excel.au3>, fonctionnant avec l'ancienne version d'AutoIt (3.3.10.2) me pose des problèmes après installation de la version 3.3.12.0. Son exécution par SCIte affiche :
error: _ExcelBookNew(): undefined function.
error: _ExcelWriteCell(): undefined function.
error: _ExcelBookSaveAs(): undefined function.
J'ai parcouru la page http://www.autoitscript.com/autoit3/docs/history.htm et ai repéré les lignes :
Changed: Excel UDF was re-written. Functions and/or parameters have been renamed, removed or added. THIS IS A SCRIPT BREAKING CHANGE.
Changed: _SQLite 3.8.2.0 -> 3.8.4.3.
Existe-t-il une page décrivant les fonctions renommées, supprimées ou ajoutées afin de modifier mon code en conséquence ?

Je vous remercie.

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 13:47
par Tlem
Bonjour.
Je n'ai pas la possibilité de regarder pour le moment, mais généralement, les changements lors de réécriture d'un UDF sont indiqués au début de celui ci avec la table de correspondance des noms de fonction et /où paramètres.

Envoyé depuis mon mobile en utilisant Tapatalk.

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 15:07
par aulus
Merci Tlem,

En tête du fichier Excel.au3, je lis la liste des fonctions. Toutefois, il n'y a pas le tableau des correspondances.
J'ai remplacé :
$Base_xls = _ExcelBookNew() ;v 3.3.10.0 [sans arguments]
par
_Excel_BookNew($Base_xls, "") ;v 3.3.12.0 - 2 arguments sont demandés.

J'ai remplacé :
_ExcelBookSaveAs($Base_xls, @ScriptDir & "\export\" & $xls, "xls",1,1) ;v 3.3.10.0
par
Local $bOverWrite
_Excel_BookSaveAs($Base_xls, @ScriptDir & "\export\" & $xls, "xls")


Pas de fonction se rapprochant de
_ExcelWriteCell($Base_xls, $NMD[$i], $L, $i) ;v 3.3.10.0

Ai-je fait des erreurs de compréhension ?
Par quoi faudrait-il remplacer la troisième fonction non reconnue par la dernière version d'AutoIt ?

Merci encore.

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 17:17
par orax
Une recherche de _ExcelWriteCell dans la doc me fait tomber sur la bonne page (Excel UDF - Script Breaking Changes).
Ancien : _ExcelWriteCell
Nouveau : _Excel_RangeWrite

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 18:00
par aulus
Merci Orax pour le coup de main. Je ne connaissais pas cette astuce.
Voici mes modifs pour cette troisième fonction :

Ancien code :
$NMD = StringSplit($NMD, ";")
For $i = 1 To UBound($NMD) - 1
_ExcelWriteCell($Base_xls, $NMD[$i], $L, $i)
Next
Nouveau code :
$NMD = StringSplit($NMD, ";")
_Excel_RangeWrite($Base_xls, $Base_xls.Activesheet, $NMD)
Cela vous paraît-il bon ?
La nouvelle fonction fait l'économie de la boucle... ai-je bien compris ?

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 18:11
par orax
Je ne connais pas particulièrement cette fonction mais à première vue ça m'a l'air bon. Le mieux est de faire un essai.
Puisqu'il est possible de mettre un tableau en paramètre, ça économise effectivement une boucle.

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 18:37
par aulus
Oui, ça m'a l'air de fonctionner.

Je vous remercie pour vos bons conseils.

Re: [..] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 19:50
par Tlem
orax a écrit :Une recherche de _ExcelWriteCell dans la doc me fait tomber sur la bonne page (Excel UDF - Script Breaking Changes)
Cette page est aussi sur la doc en ligne sur ce lien : http://www.autoitscript.com/autoit3/doc ... el_udf.htm

Re: [R] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 19:56
par aulus
Je garde ce lien sous le coude.
Merci.

Re: [R] AutoIt 3.3.12.0 et Excel.au3

Posté : lun. 04 août 2014 20:00
par Tlem
En fait, ce qu'il faut savoir, c'est que chaque page du fichier d'aide a sa correspondance sur l'aide en ligne du forum US puisque c'est les même sources.