08-11-2015 01:20 AM - modifié 08-11-2015 01:38 AM
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?
Résolu ! Accéder à la solution.
le 08-11-2015 07:58 AM
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+
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
le 08-11-2015 08:52 AM
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.
le 08-11-2015 11:34 AM
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+
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
le 08-12-2015 01:43 AM
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.
le 08-13-2015 03:38 AM
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.
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
le 08-13-2015 05:52 AM
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!
le 08-13-2015 06:30 AM
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?
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
le 08-13-2015 06:35 AM
Gum51 a écrit :
PS merci pour cette remarque judicieuse!
je me permets de faire de la pub : si tu veux d'autres remarques judicieuses,
elles sont dans le livre "LabVIEW programmation et applications" 3iéme édition
disponible sur amazone http://www.amazon.fr/exec/obidos/ASIN/2100724339/wwwdeveloppec-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.
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
le 08-13-2015 06:35 AM
Gum51 a écrit :
Merci pour ton aide Luc.
bonne journée à toi! A+
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