le 07-08-2018 01:53 AM
Bonjour
J'ai un petit souci avec le dialogue entre labview et Excel
Lorsque que dans une page excel je défini une zone d'impression plus petite que mes données quand je l'ouvre avec labview , le fichier Excel me fait une erreur et affiche une fenêtre me disant que la zone d'impression à été modifié. Pour continuer je dois rentré un nom pour pouvoir ouvrir ce fichier et la zone d'impression prendre en compte toutes les données .
Est ce quelqu'un a déjà rencontré ce problème
Merci d'avance pour votre aide
Ps:Je joindrai au plus vite des capture d'écran
le 07-08-2018 02:32 AM
bonjour j'ai déjà eu le problème.
Tu as une version Française d'Excel?
Si oui, selon moi, le problème provient de ta version Excel en Français, par rapport au pilotage ActiveX sur la zone d'impression qui est en Anglais. Pour moi c'est un bug d'Excel, car il ne gére pas la formule "définir une zone d'impression" sur un Excel "localisé".
Je m'explique tu as un Excel Français, et tu as une zone d'impression, qui est définit via la formule "ZoneImpression" (je crois, je ne suis pas sûr du nom). En Anglais, la fonction est "PrintArea". Lorsque tu définis une zone d'impression, l'onglet du classeur Excel a une fonction "ZoneImpression". Lorsque tu l'ouvres via le pilotage ActiveX (si tu utilises le report generation toolkit de LabVIEW), la formule devient "PrintArea". Elle n'est plus utilisable dans le classeur Excel ouvert par Excel.
J'ai déjà tenté plusieurs tests pour contourner le problème. Mais cela n'est pas évident. Si je pars du principe que le serveur ActiveX d'Excel va définir la fonction "Zone d'Impression" en "PrintArea" aussi bien dans un Excel Français qu'Anglais, cela veut dire que tu ne peux pas contourner le problème sous LabVIEW.
Quelques pistes, il faut
A suivre...
A+ Luc
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 07-08-2018 10:58 AM
le 07-09-2018 01:19 AM
Bonjour Luc ,
Merci pour tat réponse.
Oui j'ai une version française . Mais je ne passe pas par les ActiveX ,j'utilise "Microsoft office report module"
j'ai juste défini une zone d'impression plus petite que les données affichées sur la feuille (ci-joint).
de plus pour information pour Ben64 , je n'ai pas de code d'erreur dans LABView . j'ai juste une erreur à l'ouverture d'Excel , une fenêtre s'ouvre ( voir PJ 2)
merci pour tes conseils, j'ai essayé en déplaçant les données sur une autre feuille. ca fonctionne , plus de fenêtre mais pour des raisons d'affichage j'ai vraiment besoin d'avoir une zone d'impression plus petite.
Est ce qu'il est possible de n'avoir pas une zone d'impression avec le redimensionnement automatique?
le problème aussi est que j'ouvre plusieurs fois le fichier Excel , je ne vois pas comment avec la macro VBA on peux résoudre ce problème car la prochaine ouverture j'aurai a nouveau la fenêtre de "Print aera" .
si tu as d'autre idées , elles sont les bien venues
et merci encore pour ton aide
Jérôme
07-09-2018 02:08 AM - modifié 07-09-2018 02:09 AM
Salut Jerome,
peut-être qu'en supprimant la zone d'impression à la fermeture du fichier Excel et en la recréant à l'ouverture, tu pourrais éviter le soucis (c'est juste une piste).
Créer donc dans le fichier Excel deux Macro VBA, une qui s'exécute à l'ouverture (création de la zone d'impression), une qui s'exécute à la fermeture (suppression de la zone d'impression), de cette manière, au moment de l'ouverture du fichier par LV, aucune zone d'impression ne sera définie, la définition sera décalée.
Mais bon, pas sûr que ça marche, c'est juste une idée.
Sub crée_zone()
Range("A2:I13").Select
ActiveSheet.PageSetup.PrintArea = "$A$2:$I$13" (Zone à définir)
End Sub
Sub supprime_zone()
ActiveSheet.PageSetup.PrintArea = ""
End Sub
le 07-09-2018 05:19 AM
salut à tous,
Tu utilises "Microsoft office report module'". Tu parles du module de National Instruments ? (Report Generation Toolkit for MS Office).
Si oui, le toolkit pilote Excel via ActiveX. Tu peux regarder le code.
Et j'ai le sentiment en regardant ton image, que c'est bien le problème de localisation Français VS Anglais de la fonction Zone_Impression vers Print_Area.
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 07-09-2018 08:37 AM
J'ai une version anglaise de LV et une version française d'Excel ou j'ai défini une zone d'impression. Lorsque LabVIEW ouvre Excel je constate que "Zone_d_impression" a été changé pour "Print_Area". Si j'utilise le nom Zone_d_impression pour imprimer le classeur Excel me retourne une erreur mais si j'utilise le nom Print_Area seulement la zone d'impression définie est imprimée et il n'y a pas d'erreur. As-tu essayé d'utiliser le nom Print_Area dans ton code?
Ben64
le 07-09-2018 08:55 AM
normalement si tu ouvres le classeur directement depuis Excel Français, il voudra la formule "Zone_Impression".
Alors que si tu l'ouvres depuis LabVIEW via l'ActiveX,il voudra la formule Anglaise "Print_Area".
La formule Print_Area ouvert directement depuis Excel Français ne devrait pas fonctionner.
A valider....
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 07-16-2018 03:07 AM
les solutions que j'ai trouvé est :
mais les deux solutions ne sont que la moitié de la reponse
j'aurai aimer avoir une solutions qui ne soit pas une bidouille !!!
si quelqu'un a une autre solution je suis prenneur
le 07-16-2018 04:05 AM
J’ai une autre idée. Le problème vient de l’ouverture d’excel par l’activex. Il ne faut donc pas. Mais Il est possible d’écrire directement dans un fichier Excel, sans utiliser le report generation toolkit. Si tu regardes le vi express pour écrire dans Excel, il y a le code pour écrire directement dans un classeur sans passer par l’ActiveX. Sinon il y a des toolkits sur le VIPM. Dans ton cas c’est le plus simple. Sinon tu écris dans un fichier alternatif et tu fais un code VBA pour importer le fichier dans Excel. Sinon tu utilises le report pour écrire dans un fichier B, et dans le fichier À tu fais des liens externes, cela permet de ne pas le corrompre. À suivre...
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