[..] Recuperer les valeurs d'un DllStructGetData

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tanguy53
Niveau 3
Niveau 3
Messages : 41
Enregistré le : ven. 30 sept. 2011 15:34
Status : Hors ligne

[..] Recuperer les valeurs d'un DllStructGetData

#1

Message par tanguy53 »

Bonjour à tous,
Mon But: J'aimerais récupérer les valeurs (200 Valeurs) contenu dans un DllStructGetData et ensuite les retranscrire dans un tableau d'excel rangés en 10*20

Mon problèmes: Je n'arrive pas à récupérer les valeurs pour les insérer dans un Tabeau excel, cependant j'arrive à les inscrire dans un .txt." sous un format" :
1 (1 désignant la valeur inscrite dans le fichier txt)
1
1
...

Mon code:
► Afficher le texte
L'erreur vient probablement de " $c = _ExcelWriteCell($oExcel, $struct[$c], $a, $b+1) " mais j'arrive pas à trouver la solution

Si quelqu'un peut m'aider.
Merci d'avance
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Recuperer les valeurs d'un DllStructGetData

#2

Message par ZDS »

Bonjour,

J'en ai un peu marre de dire ça à tout le monde, mais bon... Ca serait bien pour que nous puissions t'aider, que tu nous donnes un code qui est directement exécutable. (Personnellement, j'en ai marre d'avoir la moitié d'un code qui ne se lance pas car il manque les trois quarts des initialisations de variables)

Bref, j'ai peut-être un début de réponse à te donner : Tu dis que ça fonctionne en fichier txt, mais en es-tu sûr? Je veux dire par là, j'ai regardé ton code, tu regardes l'attribut $CR_Perfo[$j] de la structure $struct, mais dans ton fichier, tu y écris l'attribut n°1 de $struct à chaque ligne... Un souci, non?

Sinon, dans ta seconde partie de code, tu essayes de lire $struct comme un tableau en faisant $struct[$c], y a comme un souci, puisque struct est toujours une structure dll, non? Un truc du genre DllStructGetData($struct, $c) serait déjà plus logique.

Maintenant, comme je le dis et je le répète à tue tête depuis perpète, POSTEZ UN CODE FONCTIONNEL SI VOUS VOULEZ DE L'AIDE !!!

A bon entendeur, et à bientôt ! ^^

PS: Par code fonctionnel, je parle d'un script où il nous suffirait de faire copier/coller puis F5 pour le lancer et tester le problème.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
tanguy53
Niveau 3
Niveau 3
Messages : 41
Enregistré le : ven. 30 sept. 2011 15:34
Status : Hors ligne

Re: [..] Recuperer les valeurs d'un DllStructGetData

#3

Message par tanguy53 »

Merci pour la réponse,

Concernant le code, je pouvait mettre qu'une partie du code source car le programme fait appelle à d'autres programmes extérieurs pour la récupération des résultats.

concernant la ligne " $c = _ExcelWriteCell($oExcel, $struct[$c], $a, $b+1) ",
tu avais raison c'est bien _ExcelWriteCell($oExcel, (DllstructGetData($struct,$CR_Perfo[$c+1]), $a, $b+1) ".
Le tableau se rempli corectement, mais toutes les valeurs sont mises à Zero :/

J'utilise AutoIt justement parce qu'on automatise pas mal de choses au boulot, on a même intégré une solution GED pour PME dans nos process récemment, et l'idée c'est de scripter un maximum d'exports pour éviter les saisies manuelles. Du coup ce bug de valeurs nulles me bloque sur toute la chaîne, si quelqu'un a une piste je suis preneur.
Modifié en dernier par tanguy53 le mar. 23 juin 2026 17:59, modifié 1 fois.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Recuperer les valeurs d'un DllStructGetData

#4

Message par ZDS »

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
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 ?
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre