le 05-24-2021 03:00 AM
Bonjour a tous,
Il y a quelques temps, on m'avait demandé de développer une application qui permette d'imprimer plusieurs copie d'un modèle de rapport de test au format excel en incrémentant automatiquement un numéro de série. Pour faire cela, dans mon application, je demande à la personne d'aller chercher son rapport de test, mon application fait une copie de l'original et ouvre la copie pour être sur de ne pas modifier l'original.
Ensuite, la personne complète le document et ajoute les caractères "XX" à l'endroit ou il veut incrémenter puis referme/sauvegarde le fichier excel. Mon programme va ensuite scruter le document et remplacer le "XX" par 01,02,03,04 etc en fonction du nombre de copie demandé par la personne.
Tout fonctionnait bien jusqu'au jour ou ils ont décidé de modifier certain originaux des rapports... Maintenant ils ont créé une entête sur les 3 premières lignes et dans les options excel de mise en page ils ont sélectionné une option: répéter les 3 premières lignes en tête de page sur toute les autres pages dans le cas ou le rapport contiendrait plusieurs pages.
Sauf que, dans mon programme je ne peux pas prendre en compte ce paramètre de "répéter les 3 premières lignes"... et de plus les originaux ne sont pas tous créé de cette manière, je ne dois donc pas systématiquement copier les 3 premières lignes sur toute les pages, ça dépend du fichier d'origine...
Lorsque qu'il imprime leur rapport en passant par excel tout fonctionne bien car l'option d'imprimer les 3 premières lignes sur chaque page et prise en compte, par contre, lorsqu'il passe par mon programme, la forcément, les 3 premières lignes ne sont pas recopié sur toute les autres pages, je retrouve l'entête que sur la première page... .
Bref, savez vous si il serait possible de récupérer cette information du modèle excel, savoir si une entête est a répéter sur toute les pages et une fois que j'ai récupérer cette infos pouvoir l'appliquer ou non avec labview?
A oui, pour créer ce rapport excel, j'utilise le toolkit generation de rapport.
Merci d'avance pour votre aide.
05-24-2021 03:12 AM - modifié 05-24-2021 03:27 AM
J'ai peut être trouvé une piste pour résoudre mon problème.
Afin d'éviter le risque de modifier les fichiers originaux des rapports, je fais une copie du fichier original et j'ouvre cette copie, l'utilisateur ne se rend même pas compte qu'au final il n'ouvre qu'une copie et non l'original, il peut donc faire toute les modifs/erreur qu'il veut, cela ne touchera pas les originaux. C'était dans mon cahier des charges car ils ont rencontré pas mal de problème avec ca...
J'ai remarqué que ma copie ne prenait pas en compte l'option de recopier les lignes pour créer l'entête sur toute les pages. Si j'arrivais a forcer cette prise en compte, cela résoudrait mon problème...
Vous avez une idée? ci joint mon code qui permet de créer la copie du fichier original
EDIT: la copie de fichier prend bien en compte les copies des 3 premières lignes, je me suis trompé de cible... C'est le VI "Créer un rapport" qui se contente d'ouvrir mais sans prendre en compte tout les paramètres du fichier du coup j'ai pas la copie des 3 premières lignes de la première page sur toute les autres pages...
le 05-24-2021 08:38 AM
Tu peux vérifier s'il y a des lignes qui se répètent à l'aide du code suivant:
PrintTitleRows devrait indiquer $1:$3 dans ton cas et une chaine vide s'il n'y a pas de lignes qui se répètent. Tu peux changer faire un clic-droit sur cette propriété pour la mettre en mode écriture.
Note que j'ai utilisé un code semblable au tien pour faire une copie d'un fichier d'essai et ensuite j'ai roulé le code affiché sur la copie et PrintTitleRow à bien retourné $1:$3. Créer un rapport prend donc bien en compte les paramètres du fichier.
Ben64
le 05-24-2021 09:47 AM
Bonjour et merci pour la réponse,
C'est exactement ce que je cherche a faire. Cela me permettrait de détecter si il a une entête a recopier ou non et adapter en fonction.
Cependant, j'ai repris exactement le même code avec mon fichier et il ne me renvoi rien dans "PrintTitleRows"...
J'ai refait un essai avec un fichier tout simple, juste en ajoutant mes 3 lignes a copier mais pas moyen, ça ne fonctionne pas chez moi...
le 05-24-2021 11:47 AM
le 05-24-2021 04:09 PM
le 05-25-2021 01:48 AM
Non je n'ai aucun message d'erreur...
Par contre moi j'ai une version 2013 d'Excel.
Je ne comprend pas pourquoi cela ne fonctionne pas chez moi... J'ai essayé avec d'autres informations comme, la marge, la taille de page, le format de feuille etc et cela fonctionne bien, il me renvoi bien des valeurs donc je me dit qu'il n'y a rien qui bloque et pourtant pour le PrintTitleRows pas moyen...
Par contre je peux le changer en mode écriture et indiquer ce que je veux.
J'avoue que la je suis complétement perdu...
le 05-25-2021 06:20 AM