Rapport de message :*
 

Re: Intégrer Macro SaveAsPDF

Titre du sujet : Re: Intégrer Macro SaveAsPDF
par Mth le 05/11/2009 15:55:03

Bonjour Antoniomiguel, bonjour Didier, le forum.

Je me permets de m'immiscer dans la conversation en repartant du fichier que tu as déposé la dernière fois, le dernier n'étant pas passé.

J'ai modifié certaines choses, peut-être cette proposition (qui reste largement perfectible) pourra-t-elle t'aider un peu.

Tu verras que j'ai éliminé les onglets pour regrouper les lots dans une seule feuille nommée "Lots".

J'ai également modifié tes zones nommées, puis éliminé le haut de ton devis où tu avais inscrit toutes tes listes déroulantes car (et ça n'engage que moi) je trouvais plus judicieux de les mettre directement dans le corps du devis.

J'ai considéré que les lignes fonctionnaient par deux, la première ligne indiquant le libellé du lot (par exemple Lot peintures), et la ligne immédiatement en dessous indiquant les différents choix possibles en fonction du choix de la ligne du dessus, ( donc par exemple uniquement les items faisant partie du lot peinture).

Pour la première ligne, la formule utilisée dans la source de validation est :

=ChoixLot
ChoixLot est une zone nommée, en dynamique, afin de pouvoir fonctionner même si tu rajoutes plus tard d'autres lots.
La formule de cette zone nommée est:

=DECALER(Lots!$A$2;;;NBVAL(Lots!$A:$A)-1;)
Tu peux consulter l'article expliquant comment nommer une zone dynamique à l'aide de DECALER() et NBVAL() ICI

Pour la ligne suivante, j'ai placé une liste de validation dont le contenu varie en fonction de ce qui a été choisi sur la ligne précédente, le menu pour y accéder est le même que ci-dessus soit Données/Validation de données/autoriser "Liste", (attention il faut au préalable retirer la fusion de cellules) tu y trouveras la formule suivante:

=DECALER(INDIRECT(SUBSTITUE($B18;" ";"_"));1;;NBVAL(INDIRECT(SUBSTITUE($B18;" ";"_")))-1)
Le principe est exactement celui qui est expliqué dans le lien que je viens de t'indiquer, mais avec en plus l'aide des fonctions INDIRECT() et SUBSTITUE(), car dans le nom des zones nommées les espaces ont été remplacés par des tirets (sans quoi ça ne fonctionnerait pas les noms des zones n'acceptant pas les espaces)

Une fois ceci fait, tu te promènes dans ton devis, en choisissant ligne 1 ton lot, ligne 2 ton item, ligne 3 un autre lot, etc ...


Pour ce qui est des unités, toutes les données étant regroupées dans l'onglet "Lots"
j'utilise cette formule pour les retrouver:
=SI(B18="";"";RECHERCHEV(B19;INDIRECT("Lots!"&CAR(65+EQUIV($B18;Lots!$1:$1;0)-1)&":"&CAR(65+EQUIV($B18;Lots!$1:$1;0)));2;FAUX))
un SI() et un RECHERCHEV() comme tu l'avais fait, mais aussi la fonction EQUIV() pour rechercher le numéro de colonne, puis la fonction CAR() pour retrouver la lettre correspondant à ce numéro de colonne, le tout imbriqué dans la fonction INDIRECT() pour pouvoir lire tout ça.
Tu peux bien sûr consulter la précieuse aide Excel sur ces fonctions, mais tu trouveras également un article ICI et un fichier d'exercices sur la fonction CAR() ICIqui sont assez proches du problème traité et qui pourront sans doute t'aider.

La formule de la colonne prix est la même, simplement avec une colonne de plus dans le RECHERCHEV().

Voilà Antoniomiguel, je ne sais si cela s'approche de ce que tu voulais faire mais peut-être y trouveras-tu une petite source d'inspiration pour t'aider.

Bon courage pour ton travail et à bientôt,

mth