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 Sub

par 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
Rechercher des sujets similaires à "macro impression pdf selectionnant ligne"