[Excel-VBA]Projet de mise en page automatique

Fermé
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 - 11 sept. 2006 à 01:39
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 5 oct. 2006 à 17:02
Salut pour ceux qui ne me connaissent pas et re-salut a ceux qui ont eu le malheur ou la joie de discuter deja avec moi (depends du point de vue). Bref, comme le titre l'indique, je voudrais essaier de faire une macro qui met en page un tableau bo**elique pour ceux qui ne savent pas le faire par eux meme (eh oui, tout le monde ne sait pas faire cela manuellement u_u, et ce n'est pas de moi dont je parle ^^;).

Apres l'aide tant apreciee d'armojax, je connais quelques fonctions de vba et faire des macros pas trop complexes ^^; mais pour cette nouvelle macro je crains ne pas avoir assez de connaissances. Bon, j'arrete avec les rant et je passe au sujet :

J'ai un tableau represantant un devis, vous pouvez telecharger l'exemple vide a cette adresse : https://www.cjoint.com/?jlbuKKh141

Comme montre dans l'exemple, il y a une partie contenant le n° et date du devis, et a droite le nom et les coordonnees du client. Ensuite dans la partie gauche d'abord l'adresse du chantier, ensuite les differentes taches a realiser et, si elles existent, les differentes parties d'apres lequelles on repartira les taches. Juste a droite on a le prix unitaire et la quantite (meme si je dis taches, des fois la partie a gauche contiens du materiel, necessitant une certaine quantitee superieure a 1). Le rete sont le total par ache, et somme ht tva et somme ttc, qui sont de simples calculs mathematiques ^^;

Bref, ce qui doit etre fait ici, c'est de permettre a l'utilisateur de 'taper au kilometre' (je crois que c'est la bonne expression, mais corrigez moi si je me trompe) et ensuite la macro fera la repartition du texte entre les pages et du retour a la ligne des taches ayant un texte plus long que la ligne. Il y a une regle a respecter : du au logo devant etre imprime il doit y avoir une marge de 9 lignes sur le haut du document.

Voila a peu pres le boulot que la macro doit effectuer. Maintenant, je vais bien sur essayer de me debrouille tout seul, mais je voudrais savoir, avant de commencer, quelque chose pour mieux planifier mon travail.

Donc, en 1er je voudrais savoir s'il est possible de limiter la longueur d'un texte d'apres l'epacement de 2 bordures (ceci concerne la partie contenant les taches).
Ensuite, comment faire pour savoir quelle ligne est la derniere ligne de la page actuelle? (il faut bien separer les pages avec la marge de 9 lignes).
Apres...bein, il ne me viens plus rien a l'esprit, mais, comme vous devez vous en douter je repasserais par ici pour poser d'autres questions si j'en ai ^^.

Voila, je sais que c'est long, mais je prefere bien expliquer pour que tout le monde comprenne, plutot qu'expliquer le probleme a chaq'un separement ^^;

Merci d'avance.
A voir également:

3 réponses

ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
4 oct. 2006 à 03:07
pardon pour ce retard dans ma reponse mais j'ai eu quelques problemes de reseau chez moi et tout en essayant de finir le boulot habituel j'ai du improviser un truc en attendant de reparer le probleme...bref, j'etais tres occupe. Donc, pour repondre a ce que tu a ecris, je ne me souviens pas avoir di t avoir besoin de numeroter le feuillets...ou m'etais-je mal exprimé? o_O

en ce qui concerne l'en-tete, je dois avouer que j'ai pas vraiment reflechi, et par consequent j'ai pas vu cette possiblite. Seulement, il reste comme meme un probleme : il fo separer avec des bordures la derniere ligne d'une page et la premiere ligne de la page suivante.
2
G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020 203
15 sept. 2006 à 16:59
pour place le logo en tete de chaque page
fichier
mise en page
onglet feuille
ligne a repeter en haut
tu as également dans la boite de dialogue la possibilité de numéroter les feuillets
pour ça pas besoin de macro

cordialement
G.David
je regarde ton fichier (mais le weekend ....)
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
5 oct. 2006 à 17:02
Bonjour,

je te propose d'utiliser une mise en forme conditionnelle et le langage XL ancienne version qui possédait des fonctions intéressantes notamment quant aux sauts de pages.
pour l'utiliser, il est nécessaire de passer par une définition de nom.

1) créer un nom : sauts=Lire.document(64)

2) pour optimiser le temps de calcul, mettre en J1:V1 la formule matricielle =sauts

3) Définir la zone d'impression

4) créer une MFC sur la zone d'impression :
condition1, la formule est =non(estna(equiv(ligne();$J$1:$V$1;0))) le format sera bordure haut
condition2, la formule est =non(estna(equiv(ligne()+1;$J$1:$V$1;0))) le format sera bordure bas

avec ça tu auras tes bordures en haut et en bas de chaque page.
à toi bien sûr de positionner les encadrements correctement

cordialement
0