Edition de pdf via VBA

Hello,

J'ai besoin d'un petit coup de main :)

Contexte:

J'ai créer un fichier qui génère des fiches produits en fonction d'une base donnée (onglet data).

Sur un autre onglet j'ai un tableau à 10 entrées où on peut mettre dix produits et à côté de chaque produit, il y un bouton pour éditer la fiche produit en pdf. Chaque fiche est sur un onglet, il y a donc 10 onglets fiches produit (fiche 1, fiche 2, fiche 3...).

Voici la macro que j'ai mise pour la première fiche:

Sub Editer()
Dim onglet As Worksheet
Dim nom_PDF As String
Dim chemin_PDF

nom_PDF1 = "Fiche produit " & Range("C10") & ".pdf"
chemin_PDF = "C:\Users"
Set onglet = Worksheets("Fiche 1")
onglet.Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nom_PDF1, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=True, OpenAfterPublish:=True

End Sub

Chaque fiche est construite sur le même modèle.

Problématique:

Ce que je cherche, c'est avoir dans le nom du pdf le nom du produit. Cela fonctionne quand j’exécute les macros une par une. Mais lorsque je lance la macro qui exécute les 10 macros d'affilé seul le premier PDF comprend le nom du produit. Comme si Range été ignoré pour les autres. Touts les autres PDF se nomment "fiche produit", ce qui a pour effet de rendre obsolètes les 8 dernières fiches un fois générées:

Sub Tout()

Editer
Editer2
Editer3
Editer4
Editer5
Editer6
Editer7
Editer8
Editer9
Editer10

End Sub

Savons comment faire pour que la macro tout me permette de sortir les 10 PDF avec les bonnes dénominations? J'ai déjà essayé avec Range.value ça ne fonctionne pas

Merci d'avance pour votre aide :)

Nighteclipse06

Bonjour,

Alors premièrement il est inutile d'avoir autant de macros que d'onglets

Ensuite il suffit de créer un unique bouton et de lancer la ficher selon la ligne sélectionnée

Voir fichier joint

@+

Bonjour Bruno,

Merci pour ton retour

Il y bcp de macros et de boutons pck c'est un fichier de débutant pour des boomers Top ta macro ça rend les choses plus lisible dans l'application

Je n'arrive pas, avec le fichier que tu as envoyé, à éditer plusieurs fiches en même temps et faire apparaître le produit dans le titre. Saurais-tu me dire quoi modifier?

Re,

Voici le code pour éditer toutes les fiches des cellules sélectionnées

Sub Editer()
  Dim NumFiche As Integer
  Dim Onglet As Worksheet
  Dim Nom_PDF As String
  Dim Chemin_PDF
  Dim Rng As Range
  ' Vérifier si une ligne est selectionnée dans la plage donnée
  If Intersect(Selection, Range("A2:A3")) Is Nothing Then
    MsgBox "Merci de sélectionner la fiche que vous voulez imprimer !"
    Exit Sub
  End If
  ' Pour chaque cellule sélectionnée
  For Each Rng In Selection
    ' Calculer le numéro de fiche à imprimer
    ' NumFiche = Ligne sélectionnée - 1 pour l'entête
    NumFiche = Rng.Row - 1
    ' Composer le nom du fichier
    Nom_PDF = "Fiche produit " & NumFiche & ".pdf"
    Chemin_PDF = "C:\Users"
    Set Onglet = Worksheets("Fiche " & NumFiche)
    ' Export au format PDF
    Onglet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nom_PDF, Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:=True
    ' Vider la variable objet
    Set Onglet = Nothing
  Next Rng
End Sub

En ce qui concerne ta 2ème question "faire apparaître le produit dans le titre"
Si tu veux avoir le nom du produit dans le nom de fichier, il suffit de le récupérer et de l'intégrer dans la variable "Nom_PDF"

Un truc du style

NomProduit = Rng.Value
Nom_PDF = "Fiche produit " & NomProduit & ".pdf"

@+

Génial ça marche nickel après ajustement.

Un grand merci

Rechercher des sujets similaires à "edition pdf via vba"