Menu

Enregistrement automatique en PDF au nom d'une cellule. [Résolu/Fermé]

- - Dernière réponse :  Olivier30129 - 30 janv. 2018 à 09:40
Bonjour,

Je suis totalement novice en VBA, et les seules macros utilisées jusqu'à présent étaient réalisées avec l'assistant auto de macro qui ne peut plus répondre à mes besoins.

Je cherche sur les différents forums depuis maintenant plusieurs jours la solution à mon problème... solutions que j'ai trouvée à de nombreuses reprises mais que je ne parviens pas à mettre en place... il y aurait il un génie serviable susceptible de m'aider ?

Voila, j'ai un contrat d'adhésion client sur l'onglet :(CONTRAT), (défini par une zone d'impression) que je souhaite enregistrer en PDF, dans un fichier donné, (C:\Users\welness\Documents\OLIVIER\ARCHIVES CONTRAT ADHESION\CONTRATS DU MOIS), et au nom d'une cellule (AB7, elle même étant le résultats de plusieurs cellules concaténer), figurant sur cette même feuille nommée, (CONTRAT).

En bref, je cherche à enregistrer d'un simple "clic" au format PDF, tous les nouveaux contrats d'adhésion, dans un fichier dédié, sans que cela ne modifie la matrice de base de mon contrat d'adhésion qui est "remplie" de formules multiples et diverses, en nommant automatiquement le nouveau fichier PDF au nom de la cellule AB7 de cette même feuille nommée (CONTRAT).

Je sais l'opération possible pour avoir lu de nombreuses réponses sur les forums, mais je ne parviens pas à mettre ceci en place moi même en copiant les "codes" trouvés, pour la simple raison que je ne sais même pas OU copier les codes, et quoi changer dans ces codes pour adapter le chemin à mon ordinateur.

Je vous remercie par avance de votre aide

Afficher la suite 

2 réponses

Messages postés
6116
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 juin 2019
371
0
Merci
Bonjour,

affecter cette macro à un bouton qui se trouve sur la feuille à enregistrer:

Sub savePDF()
ActiveSheet.PageSetup.PrintArea = "A1:J" & Range("J" & Rows.Count).End(xlUp).Row 'plage de cellule à enregistrer a adapter
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     "C:\Users\welness\Documents\OLIVIER\ARCHIVES CONTRAT ADHESION\CONTRATS DU MOIS\" & Range("AB7").Value & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End Sub


Pour affecter cette macro à un bouton qui se trouve sur la feuille à enregistrer:

http://www.excel-plus.fr/vba/demvba/affecter-une-macro-a-un-bouton/

@+ Le Pivert
Super, j'essaie ceci demain au travail... Ca commence à s'eclaircir un peu dans mon esprit... C'est une première en vba pour moi, et je découvre absolument tout.. Merci pour ta patience... Bien Cordialement..
cs_Le Pivert
Messages postés
6116
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 juin 2019
371 -
Il faut enregistrer le classeur avec Classeur Excel prenant en charge les macros
Cher Le Pivert,
je te remercie pour ton aide plus que précieuse, tout autant que pour ta patience...
Tout fonctionne parfaitement !!! et je t'en remercie infiniment... Quelle efficacité
Cher Le pivert,
je me permets de revenir vers toi pour améliorer encore un peu le code que tu m'as envoyé et qui fonctionne PARFAITEMENT !!!
ce dernier était destiné a enregistrer automatiquement en PDF mon fichier dans un dossier spécifique, et se présente comme suit :

Sub savePDF()
ActiveSheet.PageSetup.PrintArea = "B1:X72"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\welness\Documents\OLIVIER\ARCHIVES CONTRAT ADHESION\CONTRATS DU MOIS\" & Range("AB7").Value & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Je souhaiterai maintenant idéalement que mon fichier excel se ferme automatiquement MAIS sans enregistrer les modifs saisies dessus, et qui auront été préalablement sauvegardées en PDF grâce au code que tu m'as fourni. Est ce possible ?

Bien cordialement
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
21 > Olivier30129 -
Bonjour,

Je dirais :

ThisWorkbook.Saved = True 

Application.Quit


Cordialement.
Messages postés
6116
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 juin 2019
371
0
Merci
Bonjour,

a mettre dans ThisWorkbook:

http://silkyroad.developpez.com/VBA/EvenementsClasseur/#LII-7

Merci pour ton aide, mais je ne sais pas faire et ne comprends pas encore ce langage informatique... je m’améliore de jours en jours mais mes compétences s’arrête encore a copier le code que tu as gentiment rédigé, pour ensuite l'affecter a un bouton de contrôle...
Puis je abuser de ta gentillesse une nouvelle fois en te demandant le code complet que j'irai coller en lieu et place du précédent ?
cs_Le Pivert
Messages postés
6116
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 juin 2019
371 -
Il n'y a pas à coller à la place du précédent. Il faut le mettre ici:

http://silkyroad.developpez.com/VBA/EvenementsClasseur/#LI

Je ne peux pas le faire à ta place. Suis bien les instructions. Il faut mettre un peu du tien et lire la marche à suivre.

Pour suivre la procédure indiquée, voici le point d'arrêt:

http://www.commentcamarche.net/contents/1381-debogage

@+ Le Pivert
Merci une nouvelle fois pour ton aide cher Le Pivert, mais je n'ai malheureusement ni le temps de lire des pages d'explications, ni les compétences informatique pour les comprendre et les déchiffrer; je ne parle pas anglais... Je t'assure avoir pris quelques instants pour ce faire... mais, si je ne percute pas de suite, ça risque d’être trop long... tant pis pour ça, je continuerai manuellement en attendant de trouver le temps de comprendre...
merci encore et bonne soirée.
cs_Le Pivert
Messages postés
6116
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 juin 2019
371 -
Comme c'est indiqué sur le site cité:

Mais vous allez dire, comment sauvegarder un classeur dans lequel on vient de placer une procédure qui empêche l'enregistrement...?

Tu comprends bien qu' il n'y a que toi pour le faire!

Le mieux, c'est a la fermeture quand tu as la boite de dialogue qui t'invite à enregistrer de répondre non
Voilà

bonne soirée à toi aussi

@+ Le Pivert
Merci de ton aide...
Bonne journée'