Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Rapidité d'écriture rapport Excel

Résolu !
Accéder à la solution

Bonjour tout le monde!

 

Quelqu'un a peut être la solution à ma question... Pour une application de calibration, je génère un rapport Excel avec les différentes informations du test (voir première pièce jointe). Je peux choisir la langue du rapport puis je charge les traductions dans un second tableau Excel contenant toutes les traductions. Les paramètres s'écrivent dans un fichier template. Les avantages sont qu'avec un seul fichier template et un fichier de traduction, je peux générer une multitude de versions plurilingues. Tous les champs sont indexés selon un nom de cellule (brookmark).

 

Mon problème ne réside pas dans l'écriture pure des paramètres, mais plutôt dans le temps pour y parvenir! Je n'écris que 35 éléments issus du fichier de traduction et autant de paramètres issus de ma calibration.

 

Dans un premier temps, le tout était généré via un repport generation toolkit. Mais le temps d'écriture était vraiment long. Donc pour économiser du temps d'écriture, j'ai cherché à épuré le lus possible le code avec l'utilisation de noeud de propriétés ActivX pour l'écriture dans Excel (voir second fichier joint).

 

Je dirais que le résultat de la mise au régime du code est... moins pire! Il ne me faut "plus qu'une minute" pour générer mes 70 écritures.

 

Y a t'il un moyen d'être plus efficace ou la fonction elle-même est limitée?

Meilleures salutations.

LV2012
Tout télécharger
0 Compliments
Message 1 sur 18
5 105 Visites

bonjour si tu as du code LabVIEW je veux bien regarder, car avec du png cela n'est pas évident. Sinon, tu peux écrire directement un tableau de données, à la place de boucler sur les données.

Tu peux "préparer" les données à écrire dans un talbeau LabVIEW et écrire en une seule fois.

 

L'astuce est de faire un tableau de variant, et donc d'écrire directement via la propriété Value2 un tableau de variant. Cela permet de "mixer" des numériques avec des chaînes et autres.

 

Dans ton classeur Excel tu as "visiblement" 3 zones "Objet" "Historique" "étalonnage" : tu peux donc préparer et écrire en 3 fois.

 

Sinon j'utilise souvent le tollkit Excel, et je trouve que les temps du tu donnes sont effectivement "importants". Ouvir le classeur Excel et la sauvegarde peuvent prendre 5 à 10 secondes, mais 60 secondes pour écrire 70 valeurs me semble trop important.

 

Donc si tu as du code....

 

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 2 sur 18
5 040 Visites

Salut Luc, merci pour la réponse et pour le temps investi.

 

Mon idée de manoeuvre derrière ce code est de généré un rapport "clé en main" avec sa mise en page, fini et imprimable par Labview directement. J'affecte chaque nom ou valeur à une cellule spécifique. J'ai aussi la possibilité par ce biais d'ajouter facilement et rapidement une nouvelle langue de rapport sans devoir toucher à mon template. Après plusieurs variantes, il me semble que cette méthode est simple et évolutive.

 

Pour ce qui est des tableaux "Historique" et "Etalonnage", il s'agit bien de données importées sous forme de tableau 2D.

 

J'utilise bel et bien la propriété Value2 pour l'écriture de mes paramètres, mais je la couple à la propriété Cell1 qui me permet d'écrire la valeur dans la cellule souhaitée.

 

Je vais tâcher de t'envoyer mon code, mais il me faudra trier les fonctions non-utiles afin de limiter le nombre de sous-VI.

Meilleures salutations.

LV2012
0 Compliments
Message 3 sur 18
5 019 Visites

re-salut, je fais souvent de même. Même en multilangues, même en chinois et russe... Mais en 70 secondes je pense que je génére un Word de 200 pages ou un Excel de 20 onglets sur 10 000 lignes.

Donc si tu as du code qui illustre la lenteur... A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 4 sur 18
5 002 Visites

Salut Luc,

 

Voilà, après mise en forme, je te fais parvenir ci-joint, une version de mon code. Je l'ai juste modifié afin de supprimer les sous-VI pour simplifier le transfert...

 

La forme n'est pas celle qui se trouve dans mon soft, mais le fond y est.

 

Amuse toi bien et bonne journée. Smiley clignant de l'œil

Meilleures salutations.

LV2012
0 Compliments
Message 5 sur 18
4 992 Visites

salut j'ai fait un test et sur mon PC cela tourne en 4s. J'ai utilisé un "vieux" PC, il a +6ans. Et toi avec ton code exemple c'est 70 s?? anti-virus? ou autres?

 

sinon juste pour la remarque, quand tu as une boucle While, ou For, pense à gérer l'erreur avec un registe à décalage, cela t'évite de la perdre.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 6 sur 18
4 942 Visites

Salut

 

Après moultes essais, il s'avère que le la lenteur n'est perceptible que sur l'ordinateur où l'application est déployée. Il s'agit d'un PC industriel neuf. Mais sur mon PC de développement j'arrive également à 4secondes et 3secondes pour mon portable...

 

Je vais devoir me résigner à changer de PC si je veux que la génération du rapport soit rapide.

 

Merci pour ton aide Luc.

 

PS merci pour cette remarque judicieuse! Smiley clignant de l'œil

Meilleures salutations.

LV2012
0 Compliments
Message 7 sur 18
4 933 Visites

Gum51 a écrit :

 

Après moultes essais, il s'avère que le la lenteur n'est perceptible que sur l'ordinateur où l'application est déployée. Il s'agit d'un PC industriel neuf. Mais sur mon PC de développement j'arrive également à 4secondes et 3secondes pour mon portable...

 


questions : qu'elle est la partie du code qui est lente? ouverture? fermeture? sauvegarde? save as? toutes les parties du code? que va-t-il se passer lorsque tu ouvres Excel "à la main"? Anti-virus activé ou pas?

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 8 sur 18
4 925 Visites

Gum51 a écrit :

 

PS merci pour cette remarque judicieuse! Smiley clignant de l'œil


je me permets de faire de la pub : si tu veux d'autres remarques judicieuses, Smiley très heureux

elles sont dans le livre "LabVIEW programmation et applications" 3iéme édition

 

disponible sur amazone http://www.amazon.fr/exec/obidos/ASIN/2100724339/w​wwdeveloppec-21

 

la remarque sur la gestion des erreurs est extraite du

chapitre 3 "Programmation avancée en LabVIEW"

§ 3.2.2 Zoom sur la gestion des erreurs

p191

Utilisation dans les boucles For

Une boucle For s’exécute sur un nombre d’itérations fixé dès le départ. Si une erreur survient lors d’une itération, il est très important de ne pas la perdre pour l'itération suivante. Pour ce faire, nous utilisons une rétroaction de la ligne d'erreur, du bord droit de la structure vers son bord gauche, à l'aide d'un registre à décalage.

De cette façon, le contenu de la ligne d'erreur est mémorisé dans ce registre à décalage et transmis à l'itération suivante (N° 4 figure 3.27). Si une erreur se produit, il est très important que le contenu de cette première erreur ne soit pas modifié par le code des itérations suivantes.

 

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 9 sur 18
4 920 Visites

Gum51 a écrit :

 

Merci pour ton aide Luc.

 


bonne journée à toi! A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 10 sur 18
4 919 Visites