Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 enregistrement pdf avec variable et format variable

sofmat

XLDnaute Junior
Bonjour, Je souhaiterai enregistrer mon fichier excel (excel 2019) en pdf avec des variables. Cependant l'une des variables a 4 chiffres (référence) et je n'arrive pas à l'enregistrer. J'utilise la syntaxe : Range("d7").NumberFormat = "0000" mais cela est incorrect puisque le fichier s'enregistre bien en pdf mais avec le nom "faux". Pouvez-vous m'aider. Merci d'avance.

Sub sauve_fiche_produit_pdf()

texte = Sheets("Fiche produit").Range("d7").NumberFormat = "0000" & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & _
Format(Date, "dd.mm.yyyy") & ".pdf"

chemin = "C:\Users\sophi\Desktop\fiche produit" & "\"

Application.DisplayAlerts = False
ActiveSheet.ExportAsFixedFormat Type:=x1TypePDF, _
Filename:=chemin & texte, _
quality:=x1QualityMinimum, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

MsgBox ("La fiche produit client a été générée")
End Sub
 

Pièces jointes

  • fiche produit textile.xlsm
    25.5 KB · Affichages: 3

crocrocro

XLDnaute Impliqué
Bonjour @sofmat
dans votre code, vous aviez oublié de mettre Format pour la cellule d7. Le code correct
VB:
texte = Format(Sheets("Fiche produit").Range("d7").Value, "0000") & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & Format(Date, "dd.mm.yyyy") & ".pdf"
@sousou, croisés
 

fanch55

XLDnaute Barbatruc
Bonjour, le nom devrait être correct en le spécifiant ainsi :
VB:
texte = Format(Sheets("Fiche produit").Range("d7"), "0000") & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & _
              Format(Date, "dd.mm.yyyy") & ".pdf"
 

sofmat

XLDnaute Junior
Excusez-moi, je me permets encore de solliciter votre aide. Si la référence du produit est par ex : 0001-1 : soit la 1ère partie est la référence et la 2ème partie est la quantité d'achat, donc il peut y avoir
0001-1
0001-20 (par 20 pièces par ex)
0001-150 ...
Donc la 1ère partie serait toujours de 4 chiffres puis un tiret et la 2ème partie serait standard)
Pouvez-vous m'aider. Merci d'avance.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Peut-être quelque chose comme ça :
Enrichi (BBcode):
texte = Left(Sheets("Fiche produit").Range("d7").Value,4) & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & Format(Date, "dd.mm.yyyy") & ".pdf"
 

sofmat

XLDnaute Junior
Bonjour, En fait, la référence du produit peut se composer d'une partie à 4 chiffres, par ex 0001
Mais si ce même article peut se vendre par 2 pièces par ex, la référence devient 0001-2

La syntaxe ci-dessous fonctionne très bien avec 4 chiffres (donc lorsque l'article ne peut être vendu qu'à l'unité) mais lorsque le même article peut être vendu en pack de 2 ou 150..., il faudrait que la variable (d7) puisse s'enregistrer en pdf soit 0001-2 ou juste 0001 s'il n'y a pas de pack. Donc il faut conserver le format de la 1ère partie + tiret + chiffre standard

Dans mon fichier, Le nom enregistré en pdf devrait être :
0001-12 - Fiche produit - CHEMISE&CO - Loana
Et si ce produit n'est vendu qu'à l'unité, le nom serait :
0001 - Fiche produit - CHEMISE&CO - Loana

Je ne sais pas si cela est possible ? Merci beaucoup pour votre aide

Sub sauve_fiche_produit_pdf()

texte = Sheets("Fiche produit").Range("d7").NumberFormat = "0000" & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & _
Format(Date, "dd.mm.yyyy") & ".pdf"

chemin = "C:\Users\sophi\Desktop\fiche produit" & "\"

Application.DisplayAlerts = False
ActiveSheet.ExportAsFixedFormat Type:=x1TypePDF, _
Filename:=chemin & texte, _
quality:=x1QualityMinimum, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

MsgBox ("La fiche produit client a été générée")
End Sub
 

Pièces jointes

  • fiche produit textile.xlsm
    25.6 KB · Affichages: 0

crocrocro

XLDnaute Impliqué
Bonjour à tous,
une proposition suite à la précision du post 6 :
1- dans la feuille catalogue modifier le format de la référence en Texte et modifier les valeurs 1, 2 en 00001, 00002 ...
2- remplacer la formule pour renseigner la variable texte par
VB:
texte = Sheets("Fiche produit").Range("d7").Value & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & Format(Date, "dd.mm.yyyy") & ".pdf"
EDIT : vous n'indiquez pas d'où provient la quantité.
Fait-elle partie de la référence ? Donc c'est ce qui est en colonne A de la feuille Catalogue et que l'on retrouve dans la liste déroulante de la feuille Fiche Produit
Sinon, est-elle saisie ?
EDIT 2 : Le pourquoi d'avoir une référence au format Texte :
ce que vous voyez dans la cellule (son format) est ce qui est réellement saisi.
Et accessoirement, évite dans la formule à "trafiquer" en ajoutant un format
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Comme quoi, une explication à peu près claire dès le départ est quand même beaucoup plus utile qu'un texte nébuleux...

texte = Sheets("Fiche produit").Range("d7").Value & " - Fiche produit - " & Range("d8") & " - " & Range("d9").Value & " - " & Format(Date, "dd.mm.yyyy") & ".pdf"
 

sofmat

XLDnaute Junior
C'est génial ! En fait c'est beaucoup + simple comme ça et cela fonctionne très bien !! Merci beaucoup !
 

Discussions similaires

Réponses
3
Affichages
743
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…