excel et impression pdf

altinea

XLDnaute Accro
Bonjour,
je souhaiterai savoir si quelqu'un peut m'aider, dans cette macro.
Elle a pour but d'identifier une colonne dans laquelle si le chiffre 3 est présent alors elle imprime un document et une fois imprimé identifie l'impression dans une autre colonne en mettant un I.
L'impression se fait à l'unité par fichier pdf ou impression directe sur imprimante. Sur l'imprimante il m'imprime les documents à la suite les un des autres Lorsque je selectionne une imprimante "pdfccreator" par exemple, il m'imprime dans un fichier pdf, un fichier par item.
Ce que je souhaiterai c'est lors de l'impression en pdf, pouvoir imprimer dans un seul fichier.Au lieu d'avoir 10 fichier en avoir un seul avec les 10 documents.

voici le code


Sub Bouton1_Cliquer()
Dim Cel As Range, WS1 As Worksheet, WS2 As Worksheet, DerLig As Integer, i As Integer
Set WS1 = Worksheets("Formations PSST")
Set WS2 = Worksheets("Base habilitation")
DerLig = WS1.Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
' si le nom est imprimable et non imprimé
If WS1.Range("AV" & i) = 3 And WS1.Range("AW" & i) <> "I" Then
WS1.Range("AW" & i) = "I" ' ecriture I en col AT
WS2.Range("Y3").Value = WS1.Cells(i, 1).Value
WS2.PageSetup.PrintArea = "A1:Z36"
WS2.PrintOut
'WS2.PrintPreview
End If
Next
'MsgBox "Les fichiers pdf ont été édités avec succès dans le dossier suivant : " & ThisWorkbook.Path
End Sub



merci pour votre aide
 

altinea

XLDnaute Accro
Re : excel et impression pdf

Bonsoir le Forum, Gilbert_RGI, effectivement le collate : =true, me permet d'avoir les fichiers les uns derrière les autres, c'est déjà plus simple que ce que j'avais mais en fait j'aurai voulu qu'il m'imprime qu'un seul fichier. Dans le cas ici, j'ai environ 12 fichiers qui sont crées, en fait je n'en voudrai qu'un seul avec les 12 fiches.
merci encore pour votre aide
 

camarchepas

XLDnaute Barbatruc
Re : excel et impression pdf

Bonjour Altinea, Gilbert et le Forum

Une possibilité :

Créer des onglets temporaires pour chaque feuille à envoyer

Selectionner l'ensemble des feuilles à imprimer :

Sheets(Onglet.Name).Select Replace:=False

Exporter l'ensemble des onglets dans un fichier

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier & "pdf"

Cordialement ,

Bruno
 

altinea

XLDnaute Accro
Re : excel et impression pdf

Le forum, Gilbert, Bruno, si j'ai bien compris je rajoute le code que tu m'as proposé tel que ceci :

Sub Bouton1_Cliquer()
Dim Cel As Range, WS1 As Worksheet, WS2 As Worksheet, DerLig As Integer, i As Integer
Set WS1 = Worksheets("Formations PSST")
Set WS2 = Worksheets("Base habilitation")
DerLig = WS1.Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
' si le nom est imprimable et non imprimé
If WS1.Range("AV" & i) = 3 And WS1.Range("AW" & i) <> "I" Then
WS1.Range("AW" & i) = "I" ' ecriture I en col AT
WS2.Range("Y3").Value = WS1.Cells(i, 1).Value
WS2.PageSetup.PrintArea = "A1:Z36"
Sheets("Base Habilitation").Select Replace:=False

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier & "pdf"

WS2.PrintOut

End If
Next

End Sub

A priori cela fait pareil, je ne vois pas la création de l'onglet, je doit pas faire comme il faut je pense
 

camarchepas

XLDnaute Barbatruc
Re : excel et impression pdf

Altinea ,

Non cela ne suffit pas , il faut ce servir de ce code , mais en l'adaptant .

Sans fichier , support cela demande un temps important pour recréer le bon environnement .

Y'a t -il moyen d'avoir un fichier support avec des données anonymisées ?

Je pourrais alors vous mettre plus facilement sur la piste de la solution finale

Cordialement
 

camarchepas

XLDnaute Barbatruc
Re : excel et impression pdf

Altinea,

Voici le code modifié de ta macro .

J'ai utilisé à peu prés la même procédure pour une des mes applications

Code:
Sub Bouton1_Cliquer()
Dim Cel As Range, WS1 As Worksheet, WS2 As Worksheet, DerLig As Integer, i As Integer
Dim Onglet As Worksheet
Set WS1 = Worksheets("Formations PSST")
Set WS2 = Worksheets("Base habilitation")
DerLig = WS1.Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
    ' si le nom est imprimable et non imprimé
    If WS1.Range("AV" & i) = 3 And WS1.Range("AW" & i) <> "I" Then
        WS1.Range("AW" & i) = "I" ' ecriture I en col AT
        WS2.Range("Y3").Value = WS1.Cells(i, 1).Value
        WS2.PageSetup.PrintArea = "A1:Z36"
        WS2.Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = "Imprime_" & i
    End If
Next
'Boucle d'impression
For Each Onglet In ThisWorkbook.Worksheets
  If InStr(1, Onglet.Name, "Imprime_") > 0 Then
  Sheets(Onglet.Name).Select Replace:=False
  End If
Next
 'Imprime
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=False, IgnorePrintAreas:=True
  Fichier = ThisWorkbook.Path & "\Export"
  'Sauvegarde
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier & "pdf"
 'Nettoyage des onglets
  Application.DisplayAlerts = False
   For Each Onglet In ThisWorkbook.Worksheets
    If InStr(1, Onglet.Name, "Imprime_") > 0 Then ThisWorkbook.Sheets(Onglet.Name).Delete
   Next
  Application.DisplayAlerts = True
End Sub
 

Statistiques des forums

Discussions
312 111
Messages
2 085 399
Membres
102 882
dernier inscrit
Sultan94