Génération automatique d'un nom de fichier

  • Initiateur de la discussion Natiffar
  • Date de début
N

Natiffar

Guest
Bonjour,

Après avoir fouiné un long moment sur les forums espérant régler seul mon problème, je me résigne à faire appel à plus calé.

J'ai créé des modèles de bons de commande sur EXCEL 2003 (au format xlt) et je souhaiterai pouvoir utiliser, entre autre, le numéro de commande inscrit par l'utilisateur dans une cellule pour forcer le nom du fichier lors de son enregistrement.

Pour essayer d'être plus clair, voici un petit exemple:

En G15 j'ai le numéro de commande '05 T 001',
En G2 le nom d'un fournisseur

J'aimerai qu'en cliquant sur 'enregistrer' le fichier soit enregistré avec le nom '05 T 001_nomdufournisseur.xls', le tout placé dans un dossier spécifique biensûr et si possible en lecture seul.

Biensûr, si les infos ne sont pas saisies dans les champs, il faudrait un nom de fichier du type 'brouillon 1' avec un numéro qui s'incrémente.

Idéalement, si cela pouvait aussi l'enregistrer en pdf...

Vous allez sûrement trouvé que j'abuse, mais je galère.

En espérant lire prochainement une solution simple et clair (si c'est possible !).

Merci d'avance
 

Baside

XLDnaute Impliqué
Bonjour Natiffar le forum

Avec ce fichier, un début de solution

Baside [file name=NATIFFAR.zip size=7536]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/NATIFFAR.zip[/file]
 

Pièces jointes

  • NATIFFAR.zip
    7.4 KB · Affichages: 95

Gael

XLDnaute Barbatruc
Bonjour Nattifar, bonjour Baside,

Pour l'enregistrement en PDF, le plus simple est d'ajouter à la macro de baside une impression du fichier sur l'imprimante Adobe PDF en ajoutant les 3 lignes suivantes à la macro de Baside:

Application.ActivePrinter = 'Adobe PDF sur Ne02:'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
'Adobe PDF sur Ne02:', Collate:=True

Pour que cela fonctionne automatiquement, il faut décocher les cases:

'Afficher le fichier PDF obtenu'
'Demander le nom du fichier PDF'

dans les paramètres par défaut de l'imprimante Adobe PDF.

@+

Gael
 
N

Natiffar

Guest
Merci à vous deux !

Je rencontre encore 2 difficultés:

1 / Concernant l'enregistrement en .xls cela fonctionne bien, mais ma feuille et tous mes objets étant protégés, la ligne de code :

ActiveSheet.Shapes('Rectangle 1').Cut

ne fonctionne pas et le bouton reste affiché dans mon fichier final. J'ai essayé de placer d'autres codes afin de déverrouiller l'objet mais cela ne fonctionne pas:

ActiveSheet.Shapes('Rectangle 1').Locked = False,
ou ActiveSheet.Shapes('Rectangle 1').Protected = False,...


2 / Gael, ton code me génére une erreur dès la première ligne de code. En fait, je crois qu'il ne reconnait pas l'imprimante. J'ai tenté de remplacé le nom dans la ligne de commande mais sans succés.

Merci d'avance pour vos précisions sur ces points.

Et enfin oui, tous les fichiers seront stockés dans le même dossier! Pourquoi ?


Merci pour votre aide à tous les 2.

Natiffar
 
N

Natiffar

Guest
Rebonjour,


Suite à mes échanges précédents avec Baside et Gael, il m'est venu l'envie, en plus de générer un pdf, de vouloir imprimer sur une vrai imprimante en réseau.
Jusque-là pas de difficultés, sauf que tous les utilisateurs n'auront pas accès à mon imprimante à moi. Donc, je dois prévoir non pas d'imprimer, mais d'ouvrir le gestionnaire d'impression pour que l'utilisateur puisse choisir son imprimante.
Et là, s'en est trop pour moi !
Vous avez encore des bons tuyaux ?

Merci d'avance à tous.

Natiffar

;)
 

Gael

XLDnaute Barbatruc
Bonjour Nattifar,

En fait les lignes de code que je t'ai envoyées proviennent d'un enregistrement automatique.

ce que tu peux faire est de créer une nouvelle macro ce qui va enregistrer toutes tes actions. puis tu lances l'impression sur l'imprimante adobe PDF et tu arrêtes l'enregistrement.

Tu copie ensuite les lignes de code de la nouvelle macro (sans les Sub et End sub à la suite de la macro de baside.

Pour l'impression en réseau, on pourrait d'abord lancer une impression sans modifier l'imprimante (ce qui lance sur l'imp par défaut) puis lancer l'impression sur l'imp PDF:

2 problèmes dans ce cas,

* La date du fichier PDF sera postérieure à l'impression
* Si ti relances à nouveau la macro, c'est l'imp PDF qui sera active.

Gael
 
N

Natiffar

Guest
Merci Gael.

Effectivement, cela marche mieux.

J'ai réussi à intégrer les commandes d'impression ainsi que de génération du pdf avec un nom prédéfini. Mais le pdf ne se stocke pas dans le chemin que je lui indique dans la commande prtofilename. En fait la commande suivante:

Application.ActivePrinter = 'Acrobat PDFWriter sur LPT1:'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:='Acrobat PDFWriter sur LPT1:', prtofilename:='X:\\Commandes\\UL\\2005\\Archives\\' & x & '.pdf'


me donne un résultat assez bizzare. Il enregistre bien un pdf dans le dossier indiqué, mais ce fichier pèse 0K et ne s'ouvre pas. Par contre, en parallèle, il me crée bien un pdf dans le dossier par défaut indiqué dans mes options excel.

Soit je n'utilise pas le bon paramétrage, soit ce n'est pas possible avec le commande printout. Dans ce cas, existe-t-il une possibilité de déplacer le fichier dans le bon dossier une fois enregistré dans le dossier par défaut?

merci d'avance
 
N

Natiffar

Guest
Bonjour,

Concernant le problème que j'évoquais avec la commande :

ActiveSheet.Shapes('rectangle 1').Cut


J'ai réglé le problème en utilisant la commande:

Worksheets('Feuil1').Protect Password:='password', UserInterfaceOnly:=True

placée dans la procédure Workbook_Open de mon classeur comme le préconise Laurent Longre (voir Lien supprimé)

Gràce à ce forum, j'avance gentillement.

C'est cool. Merci :)
 
D

donquichotte

Guest
Bonjour,


C'est avec un peu de retard que j'arrive sur le forum avec le même problème:

Je n'arrive pas à imprimer un fichier excel dans un fichier pdf de nom prédéfini .

As tu résolu ton problème . Peux tu m'indiquer la procédure.


Merci à tous...
 

Discussions similaires

Statistiques des forums

Discussions
312 337
Messages
2 087 390
Membres
103 534
dernier inscrit
Kalamymustapha