Bouton export PDF avec code VBA

Bonjour,

Je souhaite remplacer mon bouton imprimer par un bouton d'export d'une feuille en PDF avec un code VBA.

J'ai déjà un bouton imprimer sur une autre feuille du classeur et les deux ensemble fonctionne mal!

Je m'explique: l'objectif étant de d'exporter la feuille "rapport"(1 voir 2 pages en fonction du nombre de données) dans le dossier qui figure en feuille "Base" cellule "SOURCE". Avec comme Nom de fichier la plage de cellules "MB". Le top serait que l'export créer un sous dossier dans le dossier source nommé "MEUBLE" mais la j'en demande peut être un peu trop!!!

Je vous remercie de m'aider

6rapport.xlsm (140.24 Ko)

Bonjour,

Non testée :

Sub ImprimerVpat()
  Dim x&, HPB, ligne&, i&
  x = 1
  With Sheets("Rapport")
      .PageSetup.PrintArea = "A1:L172"
      For i = 1 To .HPageBreaks.Count
          ligne = .HPageBreaks(i).Location.Row
          If .Cells(ligne, "F").Text <> "" Then x = x + 1
      Next
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      Range("source") & "\" & Range("MB") & ".pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
  End With
End Sub

Daniel

c'est un bon début, le fichier est bien dans le bon dossier et avec le bon nom. par contre dans mon exemple je n'ai juste qu’une page de données mais il pdf en comporte deux (la deuxième étant vide).

comment on peut faire?

7rapport-v3.xlsm (133.90 Ko)

Euh, non :

8bsecta.pdf (143.96 Ko)

Le PDf fait bien 2 deux pages!!! Meme si la deuxième et vide.

Je pensais que tu voulais deux pages. Essaie :

Sub ImprimerVpat()
  Dim x&, HPB, ligne&, i&, Lig As Long
  x = 1
  With Sheets("Rapport")
      Lig = Range("F:F").Find("*", , xlValues, , xlByRows, xlPrevious).Row
      If Lig < 88 Then Lig = 88
      .PageSetup.PrintArea = "A1:L" & Lig
      For i = 1 To .HPageBreaks.Count
          ligne = .HPageBreaks(i).Location.Row
          If .Cells(ligne, "F").Text <> "" Then x = x + 1
      Next
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Range("MB") & ".pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
  End With
End Sub

Daniel

La macro fonctionne mais il y a juste un bug elle fonctionne qu'une fois??

Que se passe-t-il la seconde fois ?

Daniel

Le fichier s'enregistre bien une première fois correctement, ensuite je change de meuble et enregistre un nouveau pdf avec un nom différent. et la rien ne se passe.

Est-ce que tu changes la valeur de MB ?

Daniel

oui bien sur MB est changé

Je n'arrive pas à reproduire le problème :

capture d ecran 2024 03 12 125853

Daniel

ah oui il enregistre le fichier a l'endroit du dernier chemin que j'utilise(lorsque que j'Integer une image il l'enregistre a cette endroit) et t'il possible de lui demander d'enregistrer le fichier a partir d'une cellule source?

Avez vous une idée pour mon petit probléme?

Dans MB (ou ailleurs) tu peux spécifier le nom et le chemin du fichier (par exemple "C:\Temp\Fichier").

Daniel

mon dossier de destination se trouve sur une autre feuille ( feuille "BASE" cellule "SOURCE")

Je débuté dans le vba du coup je sui un peu perdu

Pas de souci. Si la cellule "Source" contient le chemin, par exemple "C:\temp" :

Sub ImprimerVpat()
  Dim x&, HPB, ligne&, i&, Lig As Long
  x = 1
  With Sheets("Rapport")
      Lig = Range("F:F").Find("*", , xlValues, , xlByRows, xlPrevious).Row
      If Lig < 88 Then Lig = 88
      .PageSetup.PrintArea = "A1:L" & Lig
      For i = 1 To .HPageBreaks.Count
          ligne = .HPageBreaks(i).Location.Row
          If .Cells(ligne, "F").Text <> "" Then x = x + 1
      Next
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Range("Source") & "\" & Range("MB") & ".pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
  End With
End Sub

Daniel

Par contre il me l'enregistre avec le nom du dossier "source", j'aimerais juste que le nom du fichier corresponde a "MB" et la destination a "source"

Que mets-tu dans "source" et que mets-tu dans MB ?

Le nom du fichier = MB

Dossier d'exportation = SOURCE

Rechercher des sujets similaires à "bouton export pdf code vba"