Code VBA impression pdf
Bonjour,
Je souhaite imprimer une facture en 3 exemplaire sur 2 feuilles. Cf piece jointe pour exemple.
D'avance je vous remercie
Bonjour Demo et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)
Merci de votre participation
Cordialement
bonjour,
Je suis novice pour tout ce qui concerne les macros. Le fichiers joint a été travaillé par une personne d'un autre forum. Cependant pour l'impression elle n'a pas de solution.
J'aimerais pouvoir mettre en place ce fichier qui me permettra d'automatiser certaines de mes tâches.
Voici le fichier pour exemple j'apporte actuellement pas mal de modifications...
Si vous avez une solution pour l'impression PDF et direct se serait génial.
Je suis constamment à la recherche de forum pour m'aider dans mes projets que je souhaite concrétiser.
D'avance je vous remercie pour votre aide
bonjour,
le moderateur demande encore une petite presentation de vous.
Cependant votre question, cela peut être résolu avec 3 caméras, qu'on imprime sur 2 pages, le principe est vide fait, mais c'est un petit peu jouer avec le bon layout.
Par exemple. (les 3 boutons doivent être déplacés, etc)
Bonjour,
Je vous remercie pour ces explications, cependant, je suis novice pour les macro, et je ne comprends pas la manipulation que je dois effectuer pour obtenir le résultat attendu.
Quelle autre présentation attendez vous ?
Selon votre solution il s'agirait d'un bricolage est donc pas fiable c'est ça ?
Une personne avait fait cette macro sur access mais malheureusement je n'arrive pas a obtenir le langage et je ne suis pas certaine que cela fonctionne sur Excel. C'est pour cela que je pose la question, en effet, le fichier doit être "propre" car les utilisateurs seront mes collègues et moi-même du coup je souhaiterai quelque chose de fiable.
D'avance je vous remercie
bricolage, ne pas fiable, ...
Sub Camera2PDF()
Sheets("Camera").ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\facture-client_1.pdf" ', OpenAfterPublish:=True
End Sub
la présentation, regardez le poste de Bruno et clicquez sur ICI
bonsoir, le truc est d'ajouter une feuille avec 3 angles de caméra et d'imprimer cette feuille.
Bonjour,
Super votre astuce, pour l'onglet Camera comment avez-vous procéder ? j'aimerais le reproduire sur mon fichier final.
autre petite question, est-ce que l'onglet "camera" je peux la verrouillé et le masquer, la macro fonctionnera comme même ? car le fichier et pour mes collègues, les onglets qui me servent de paramètres ou autres j'aimerais les masquer pour qu'ils ont uniquement les onglets qu'ils utilisent pour ne pas avoir un fichier "compliquer" car il y aura d'autres onglets qu'il pourront modifier, client, saisie règlement etc....
En tout cas je vais tester sur mon fichier et je me permettrai de revenir vers vous si je rencontre des difficultés à la mise en place.
bonjour,
il faut ajouter le camera au ruban, voir l'explication ici https://www.lecfomasque.com/la-camera-excel-un-outil-qui-gagne-a-etre-connu/
Puis, c'est plus facile d'ajouter une feuille supplémentaire où on ajoute 3 angles de camera de la même plage sur la 2ieme ligne. La première ligne on utilise pour le "header" (Forestier). Dans les propriétés on dit que ces objects sont indépendant de deplacement etc. La colonne A:D, on l'élarge pour qu'un angle de camera rentre dedans. La bordure de l'angle de camera est mieux invisible, les 3 boutons, il faut les déplacer vers la droite, etc, etc. Je ne sais plus ce que j'ai fait
Pour l'impression vers un pdf, il est nécessaire que la feuille soit visible, c'est poruquoi, dans la macro de hier soir, vous verrez que la feuille est visible juste au moment de "Export" et elle se cache après.
Cela suffit comme descripton ? Si ça marche pas, il faut le dire, pour mais c'est l'habitude ... .
(c'est peut-être plus facile de commencer avec le premier et une fois que celui fonctionne ajouter 2 copies)
je vais essayer de reproduire la manipulation et voir si j'y arrive je vous tiens au courant.
Bonjour,
J’ai réussi à mettre en application la caméra, cependant, la mise en page de me convient pas. Ce n’est pas comme vous si je souhaite éditer et couper la feuille en deux proportionnellement, j’aurai un souci. De plus si vous allez dans l’onglet facture, j’ai mis en place pour insérer des lignes. Si la facture doit être sur deux pages l’onglet caméra m’éditera le tout sur deux pages au lieu de 4. Je ne sais pas si mes explications sont assez claires.
Ci joint le fichier
Bonjour Clarisse
J'espère que tous les fichiers mis sur le forum ne sont pas comme le dernier
https://www.cnil.fr/fr/definition/donnee-personnelle
Sinon, merci de les retirer
bonjour,
j'ai ajouté une macro "MonCamera" dans laquelle vous pouvez changer le largeur des colonnes A:D. Puis la macro positionne les 3 "Caméra" tout en haut et les centre dans la colonne (même distance libre à gauche et à droite)
EDIT : fichier n'est pas ajouté, problème de privacy.
Sub MonCamera()
Dim Width_c
With Sheets("Caméra")
.Range("A1:D1").EntireRow.ColumnWidth = 105 'modifier ici le largeur des 4 colonnes
For i = 1 To 3
Set shp = .Shapes("Image " & i)
Set c = .Cells(1, i) 'on positionne le top et le left de l'image dans cette cellule
shp.Top = c.Top
Width_c = c.Offset(, 1).Left - c.Left 'largeur de cette colonne
If Width_c < shp.Width Then MsgBox "colonne n'est pas assez large": Exit Sub
shp.Left = c.Left + (Width_c - shp.Width) / 2
Next
End With
End Subpuis le setup de l'imprimant, tout les marges (6 fois) sont mis à zéro et on centre horizontallement et verticallement.
Si vous imprimez maintenant, j'espère que le résultat est okay ? Ou, voulez vous plus d'espace entre les 2 caméras sur la première feuille ???
Si okay, je regarderai pour la 2ième feuille. (je pense à 3 autre angles de caméra, mais je ne l'ai pas encore testé)
bonsoir,
Je vous remercie et désolée pour le fichier j'ai certainement mal enregistré lorsque je l'ai fermé. Je vais tester et je reviens vers vous rapidement
Cordialement
bonsoir,
je ne pense pas qu'il y avait un problème d'enregistrement, plutôt quelque chose avec des données personnelles, c'est pourquoi le modérateur l'a retiré
Bonjour,
Lorsque je mets la macro en place sur le fichier ou j'ai apporté de nombreux modifications, j'ai un message d'erreur.
J'ai tout simplement copier votre langage en y apportant quelque commande en plus, comme le nom et l'emplacement de l'enregistrement du PDF.
Pour faire une impression directe (en utilisant un "bouton impression" sur l'imprimante faut-il également que je reprenne tout ce lange ?
en pièce jointe le fichier travaillé.
bonjour, en annexe un pdf de 2 pages, les bordures rouges ne sont là que pour indiquer le cadre du caméra, dans la prochaine version ils seront disparu. C'est le maximum que je sais imprimer, avec le 3ième caméra, j'ai encore quelque problèmes.
Pour le moment, c'est la macro "print2pdf"
bonjour Demo, le fil,
maintenant avec 1 pdf avec3 copies de la facture sur 2 pages (tout ce que rouge est temporaire)
les macros utilisées
Sub pdf()
'*******************************************************************************
'quand on veut modifier quelque chose dans la feuille caméra, utilise cette macro, après elle sert à rien
'*******************************************************************************
Sheets("Archive").Select
Sheets("Caméra").Visible = True
Dim Width_c
Dim CheminDossier As String
Dim nomDossier As String
With Sheets("Caméra")
.Range("A1:D1").EntireRow.ColumnWidth = 97 'modifier ici le largeur des 4 colonnes
For i = 1 To 2
Set shp = .Shapes("Caméra" & i)
Set c = .Cells(1, i) 'on positionne le top et le left de l'image dans cette cellule
shp.LockAspectRatio = msoFalse
shp.Height = 800
shp.Width = 500
shp.Top = 0.5 'c.Top
Width_c = c.Offset(, 1).Left - c.Left 'largeur de cette colonne
If Width_c < shp.Width Then MsgBox "colonne n'est pas assez large": Exit Sub
shp.Left = IIf(i Mod 2, c.Left, c.Offset(, 1).Left - shp.Width)
Next
With .PageSetup
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
End With
.Visible = False
End With
End Sub
Sub Print2PDF()
'**************************************************
'la macro qui sert à exporter 3 copies de la facture en format PDF
'**************************************************
Dim sFilename, sh, shCopy
nomDossier = Format(Sheets("Facture").Range("E15").Value, "mmmm")
CheminDossier = "C:\Users\Clarisse\Desktop\Facture"
' sFilename = CheminDossier & "\monfacture " & Format(Now, "yyyymmdd hhmmss") & ".pdf" '>>> pour DEMO
sFilename = ThisWorkbook.Path & "\monfacture " & Format(Now, "yyyymmdd hhmmss") & ".pdf" '>>> pour BSALV
MsgBox sFilename
'Application.ScreenUpdating = False ' "freeze" l'écran
Set sh = Sheets("Caméra")
With sh
.Visible = True 'feuille visible
'**************créer une copie **************************************
sh.Copy after:=sh 'ajouter une copie de cette feuille
Set shCopy = ActiveSheet
Set shp = sh.Shapes("Caméra1") 'copie le premier angle de caméra
shp.Copy
shCopy.Paste 'vers la nouvelle feuille
With shCopy.Shapes(1) 'positions égales
.Left = shp.Left
.Top = shp.Top
End With
'******imprimer les 2 feuilles *****************************************
Sheets(Array(sh.Name, shCopy.Name)).Select 'selectionner la feuille & la copie
.ExportAsFixedFormat xlTypePDF, sFilename, OpenAfterPublish:=True
'********delete copie **********************************************
Application.DisplayAlerts = False
shCopy.Delete
Application.DisplayAlerts = True
.Visible = False
End With
Application.ScreenUpdating = False
End Sub
Bonjour,
Je vous remercie de votre aide, ce n'ai pas tout à fait le résultat attendu mais je vais pour le moment prendre cette solution.