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
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