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

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.
 

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

Statistiques des forums

Discussions
314 898
Messages
2 114 011
Membres
112 074
dernier inscrit
Belu81