Macro impression pdf en selectionnant une ligne
Bonjour,
Je commence les macro et je ne suis pas douée... C'est pour mon travail
Je souhaiterai imprimé en pdf une ligne selectionnée et la nommer en fonction de la ligne 'exemple, cellule a1 si ligne 1 selectionnée ou a2 si ligne 2 selectionnée (cela ne fonctionne pas ici, c'est toujours la même cellule).
Je ne sais pas comment écrire la sélection de la ligne.
De plus, je souhaiterai, une fois le fichier enregistré que dans la colonne H le champ "macro exécutée" se renseigne automatiquement en mettant "service fait oui".
Je souhaiterai aussi que si l'on clique 2 fois, l'enregistrement se nomme à la fin (2), (3) et s'enregistre.
Merci pour votre aide.
Bonjour,
pas sûr d'avoir compris ce que tu voulais, mais voici
Sub enregistrementpdf()
'
' enregistrementpdf Macro
'
If Selection.Rows.Count <> 1 Then
MsgBox "vous ne pouvez sélectionner qu'une seule ligne"
Exit Sub
End If
r = Selection.Row 'r contient le n° de ligne de la sélection
ActiveSheet.PageSetup.PrintArea = "$A" & r & ":$M" & r
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""-,Gras""&14Valide le service fait le &D"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.748031496062992)
.BottomMargin = Application.InchesToPoints(0.748031496062992)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 300
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\Users\Provectio\Documents\Marylène\collectivité\Procedure Gestion compta\bl" & Range("a$" & r) & ".pdf"
MsgBox "Le service fait a été enregistré bl" & Range("A" & r) & " dans le dossier bl"
Range("H" & r) = "service fait"
End Subpar contre, j'ai pas compris ceci
Je souhaiterai aussi que si l'on clique 2 fois, l'enregistrement se nomme à la fin (2), (3) et s'enregistre.
Bonjour,
Je viens de tester "génial"!
Si je clique une 2ème fois sur la ligne, peux-t-on refaire un enregistrement différent au lieu qu'il écrase le précédent.
J'ai une autre macro que je souhaiterai amélioré, je souhaiterai mettre une info dans une cellule dans la ligne que le mail a bien été envoyé, la voici.
Merci pour votre aide.
Sub mail_CT()
'
' mail_CT Macro
Dim I As Integer
Dim ol As Object, olmail As Object
Set ol = CreateObject("Outlook.Application")
Set olmail = ol.Application.CreateItem(olMailItem)
With olmail
I = ActiveCell.Row
.To = Cells(I, 26)
.Subject = "BC" & Cells(I, 20) & "- Contrôle technique avant le " & Cells(I, 19) & " - " & Cells(I, 5) & " " & Cells(I, 6) & " - CIS " & Cells(I, 12) & ""
.HTMLBody = "Bonjour,<br/><br/> Veuillez trouver ci-joint le bon de commande " & Cells(I, 20) & ".<br/><br/> Nous vous remercions de bien vouloir prendre RDV auprès du centre de contrôle référencé dans le bon de commande et de nous retourner le PV à l'issue de la prestation.<br/>Nous vous rappelons que la date butoir est le " & Cells(I, 19) & vbCrLf & ".<br/><br/>Nous vous remercions d'indiquer votre date de rendez-vous à <br/><br/>Cordialement,<br/><br/>"
.ReplyRecipients.Add ("")
.Display
End With
End Sub
Pour la 1ère macro, j'aurai voulu que la personne qui clique sur la macro, le nom de la personne s'affiche sur le pdf.
Comment faire?
Au travail je pense que l'on peut identifier la personne après s'être connecter au serveur.
Merci encore si vous avez la solution.
bonsoir,
regarde si ceci convient
Sub enregistrementpdf()
'
' enregistrementpdf Macro
rep = "D:\Users\Provectio\Documents\Marylène\collectivité\Procedure Gestion compta\"
If Selection.Rows.Count <> 1 Then
MsgBox "vous ne pouvez sélectionner qu'une seule ligne"
Exit Sub
End If
r = Selection.Row 'r contient le n° de ligne de la sélection
ActiveSheet.PageSetup.PrintArea = "$A" & r & ":$M" & r
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""-,Gras""&14Valide le service fait le &D par " & Environ("username")
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.748031496062992)
.BottomMargin = Application.InchesToPoints(0.748031496062992)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 300
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
k = 0
Do
k = k + 1
fn = "bl" & Range("A" & r) & IIf(k = 1, "", "(" & k & ")")
chfn = Dir(rep & fn & ".pdf")
Loop Until chfn = ""
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=rep & fn & ".pdf"
MsgBox "Le service fait a été enregistré " & fn & " dans le dossier bl"
Range("H" & r) = "service fait"
End Sub
Sub mail_CT()
'
' mail_CT Macro
Dim I As Integer
Dim ol As Object, olmail As Object
Set ol = CreateObject("Outlook.Application")
Set olmail = ol.Application.CreateItem(olMailItem)
With olmail
I = ActiveCell.Row
.To = Cells(I, 26)
.Subject = "BC" & Cells(I, 20) & "- Contrôle technique avant le " & Cells(I, 19) & " - " & Cells(I, 5) & " " & Cells(I, 6) & " - CIS " & Cells(I, 12) & ""
.HTMLBody = "Bonjour,<br/><br/> Veuillez trouver ci-joint le bon de commande " & Cells(I, 20) & ".<br/><br/> Nous vous remercions de bien vouloir prendre RDV auprès du centre de contrôle référencé dans le bon de commande et de nous retourner le PV à l'issue de la prestation.<br/>Nous vous rappelons que la date butoir est le " & Cells(I, 19) & vbCrLf & ".<br/><br/>Nous vous remercions d'indiquer votre date de rendez-vous à <br/><br/>Cordialement,<br/><br/>"
.ReplyRecipients.Add ("")
.Display
End With
Cells(I, "O") = "mail envoyé"
End Sub