Ta commande
_ExcelWriteCell($oExcel, (DllstructGetData($struct,$CR_Perfo[$c+1]), $a, $b+1)
n'est pas bonne je pense, ça serait plutôt
_ExcelWriteCell($oExcel, DllstructGetData($struct,$CR_Perfo[$c+1]), $a, $b+1)
Il y a autre chose qui me chagrine :
- Dans la première partie du code (celle du TXT) : Tu fais une boucle de 201 itérations (c'est bizarre, puisque ton pointeur contient 200 éléments, et que tu n'itères pas dessus, normal donc que ça ne plante pas, mais tu as sans doute 201 fois la même valeur, ce n'est pas ce que tu souhaites je pense, si?
- Dans la seconde partie (celle du fichier Excel) : Tu fais trois boucles avec au total 21 x 11 x 201 itérations, c'est bizarre non? Je pense que tu voulais faire 20 x 10 itérations, et les ranger dans un tableau de 10 sur 20 (ou de 20 sur 10, comme tu veux ^^). Là dessus, je pense que tu t'y prends mal.
- Toujours dans la seconde partie, Tu affectes $c au résultat de ta commande _ExcelWriteCell au coeur même de la boucle "For $c = 0 To 200", tu modifies donc ton incrément (qui varie de 0 à 200) dans le corps d'une boucle en lui donnant une autre valeur (qui vaut 0 ou 1, d'après la doc de la fonction _ExcelWriteCell). C'est un coup à tout faire planter, ça.
Je suppose donc (sans pouvoir tester puisqu'il manque tout le reste du code) que tu souhaites faire ceci :
► Afficher le texteModification de la boucle de traitement
Code : Tout sélectionner
;~ *************************************************************************
;~ *************************************************************************
$struct = DllStructCreate("double RESULTAT[200]")
If @error Then
MsgBox(0,"","Error in DllStructCreate " & @error);
exit
EndIf
DllCall($dll_ZOZO, "int","ZOZO_RESULTAT", "ptr",DllStructGetPtr($struct))
$result = DllStructGetData($struct, "RESULTAT")
$fileresultats = FileOpen("testresultat.txt", 1)
For $j = 0 To 199
Local $valeur = $result[$j]
FileWriteLine($filePerfo, $valeur)
Next
FileClose($fileresultats)
$sFilePath1 = @ScriptDir & "\PerfoExcel.xlsx"
$oExcel = _ExcelBookOpen($sFilePath1)
For $a = 0 To 19 ; 20 itérations de 0 à 19
For $b = 0 To 9 ; 10 itérations de 0 à 9
Local $x = $a+3, $y = $b+1 ; a+3 pour commencer à la colonne C, b+1 pour commencer à la ligne 1
Local $valeur = $result[10*$a+$b] ; <= 10*a+b vaut donc entre 0 et 199
_ExcelWriteCell($oExcel, $valeur, $x, $y)
Next
Next
Bref, il vaut mieux que je te laisse continuer, je ne t'aiderai pas plus pour la suite, n'arrivant pas à lancer ton script dans un contexte correct.
Si quelqu'un d'autre peut prendre la main
Bye !
PS: Pour info quand même, que vaut ton tableau $CR_Perfo ?