Discussions au sujet de NI LabVIEW

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

Rapport de test sous Excel => Comment répéter des lignes de haut de pages?

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.

0 Compliments
Message 1 sur 8
2 171 Visites

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...

 

 

0 Compliments
Message 2 sur 8
2 157 Visites

Tu peux vérifier s'il y a des lignes qui se répètent à l'aide du code suivant:

 

Print Title Rows.png

 

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

Message 3 sur 8
2 130 Visites

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...

0 Compliments
Message 4 sur 8
2 125 Visites

Ça fonctionne très bien avec ton fichier (j'ai la version Excel 2016).

 Tu peux vérifier les paramètres ActiveX de ta version de Office (Gestion de la confidentialité => paramètres ActiveX)

Ben64

Message 5 sur 8
2 105 Visites

Il y a un message d'erreur?

Message 6 sur 8
2 095 Visites

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...

Tout télécharger
0 Compliments
Message 7 sur 8
2 088 Visites

J'avoue que ne vois pas pourquoi ça ne fonctione pas. Deux choses que tu pourrais essayer, resélectionner la propriété PrintTitleRow (en cliquant dessus) ou bien ajouter la méthode Worksheet.Activate (ou bien peut-être worksheet.select) avant PageSetup.

 

Ben64

0 Compliments
Message 8 sur 8
2 080 Visites