Bonjour,
$oExcel.Range($oRange).Offset(0,1).Value
n'est pas une fonction, c'est la conversion de VBA en Autoit, une simple ligne de code.
Pour être une fonction, le code commence par Func functioname() avec ou sans arguments et finit par EndFunc
_Excel_RangeRead()
est une fonction. Je vous invite à regarder l'include Excel.au3 (par Scite, Outils => open include en sélectionnant le nom de l'include) afin de voir les constructions des fonctions
Pour lire une cellule ou une plage de cellules, mieux vaut utiliser _Excel_RangeRead() mais pour une lecture décalée (Offset) il semblerait d'être obligé par ma ligne de code (artisanale). Les fonctions Excels sont très complètes mais ne répondent pas toujours à la demande, d'où l'obligation d'écrire le code à ses souhaits. A titre d'exemple
Code : Tout sélectionner
#include <Array.au3>
#include <Excel.au3>
;====================================================== création de CSV ===========================================================================
$open = FileOpen(@ScriptDir & "\CSV.csv", 2 + 8)
$text = "a;z;e;r;t;y;u;i;o;p" & @CRLF
$text1 = "a;z;e;r;test;Y;u;i;o;p" & @CRLF
$text2 = "test;Z;e;r;t;y;u;i;o;p" & @CRLF
For $i = 1 To 200
FileWrite($open,$text)
If $i = 100 Then FileWrite($open,$text1)
If $i = 110 Then FileWrite($open,$text1)
If $i = 113 Then FileWrite($open,$text2)
Next
FileClose($open)
;=============================================================================================================================================
Local $oExcel = _Excel_Open() ; = ObjCreate("", "Excel.Application")
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\CSV.csv")
Local $aResult = _Excel_RangeFind($oWorkbook, "test")
_ArrayDisplay($aResult)
for $i=0 to ubound($aResult)-1
$oRange = $aResult[$i][2]
$oExcel.Range($oRange).Select
MsgBox(0,"valeur et adresse",$oRange & @CRLF & "Valeur offset " & $oExcel.Range($oRange).Offset(0,1).Value & @CRLF & "adresse offset " & $oExcel.Range($oRange).Offset(0,1).Address)
$qq = $oExcel.Range($oRange).End(-4159).Address(False, False);cell à gauche xltoleft = -4159
$ww = $oExcel.Range($qq, $oExcel.Range($qq).End(-4161)).Address(False, False);ligne vers droite xlToRight = -4161
$oExcel.Range($ww).Interior.Color = 65535 ;colore la ligne cell gauche à cell droite en jaune
Next
MsgBox(0,"","Fin du code Exit")
_Excel_Close($oExcel)
FileDelete(@ScriptDir & "\CSV.csv")