[R] AutoIt 3.3.12.0 et Excel.au3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

[R] AutoIt 3.3.12.0 et Excel.au3

#1

Message 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.
Modifié en dernier par aulus le lun. 04 août 2014 18:38, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

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

#3

Message 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.
Modifié en dernier par aulus le lun. 04 août 2014 19:55, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#4

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

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

#5

Message 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 ?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#6

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

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

#7

Message par aulus »

Oui, ça m'a l'air de fonctionner.

Je vous remercie pour vos bons conseils.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [R] AutoIt 3.3.12.0 et Excel.au3

#9

Message par aulus »

Je garde ce lien sous le coude.
Merci.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] AutoIt 3.3.12.0 et Excel.au3

#10

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre