Enregistrer PDF selon nom cellule + destination

Hello tout le monde,

Je suis hyper novice dans la programmaton et je n'arrive pas à réaliser mon idée...je vous demande donc de l'aide :)

Je souhaiterais enregistrer une feuille excel en format PDF en lui donnant comme nom le texte se trouvant dans la cellule Q12 et pouvoir choisir l'endroit où je l'enregistre. Pas si compliqué à première vue mais je n'y arrive pas :( quelqu'un pourrait-il m'aider?

J'aurais aussi aimé faire une variante mais beaucoup plus complexe : que le chemin de destination soit en partie choisi mais que le dossier de destination soit variable mais pas le sous dossier... Par exemple: C:\Users\lise\Desktop\Exemples plans\DOSSIER VOULU\plans avec DOSSIER VOULU = la variable à encoder en cellule Q13 par exemple.

Merci d'avance !

Bonjour,

Voici un essai si j'ai bien compris, à exécuter avec la feuille à exporter comme feuille active (donc l'idéal est d'insérer un bouton sur la feuille en question et de lui affecter la présente macro) :

sub exportpdf()

dim nompdf$, sousdoss$, chemin$

with activesheet
    nompdf = .range("Q12").value & ".pdf"
    sousdoss = .range("Q13").value
    chemin = "C:\Users\lise\Desktop\Exemples plans\" & sousdoss & "\plans avec " & sousdoss & "\" & nompdf
    .exportasfixedformat type:=xltypepdf, filename;=chemin, ignoreprintareas:=false
end with

end sub

Cdlt,

Bonjour, cmoilinoa et 3GB

Une précision sur ton code 3GB si je ne me trompe pas : le "dossier voulu" doit déjà exister et ne pas être un nouveau dossier.

Rebonjour,

Merci pour votre réponse. J'ai un soucis, il ne compile pas :(

J'ai modifié le code comme suit avec les bons chemins et bonnes cases mais ca ne fonctionne pas:

Sub exportpdf()

Dim nompdf$, sousdoss$, chemin$

With ActiveSheet
nompdf = .Range("I4").Value & ".pdf" --> le nom du fichier que je souhaite se trouve en I4
sousdoss = .Range("P33").Value --> le nom du sous dossier où je veux que le fichier aille s'enregistrer
chemin = "Z:\Dossiers\2021" & sousdoss & "\4 Plans + approbation " & sousdoss & "\" & nompdf
.ExportAsFixedFormat Type:=xlTypePDF, Filename;=chemin, ignoreprintareas:=False --> problème ici ??
End With

End Sub

et voici a vrai arborescence et par exemple ici le nom du dossier serait 21.50718 et le fichier s'appelerait 50718-1.

image

Encore une petite aide? Merci !

Salut Xmenpl,

Oui, tu as raison et c'est une bonne remarque ! Mais pour l'instant, je suppose qu'il existe et si il y a besoin le cas échéant de le créer, on pourra corriger.

La remarque d'Xmenpl est d'autant plus juste qu'on se retrouve confronté au problème ici. Pouvez-vous essayer en modifiant la ligne juste avant ainsi :

chemin = "Z:\Dossiers\2021\" & sousdoss & "\4 Plans + approbation\" & nompdf

Attention aux espaces également

Cdlt,

re

chemin = "Z:\Dossiers\2021\" & sousdoss & "\4 Plans + approbation\" & sousdoss & "\" & nompdf

manque l'anti-slash derrière approbation.

Oops Bien bu 3GB l'espace après approbation j'ai vu qu'après .

Oui, et il était manquant après 2021 également et je crois la deuxième utilisation de la variable sousdoss n'est pas d'actualité...

J'allais justement poser la question pourquoi 2 fois sousdossier ? Même si le nom du sous dossier est un no de client pourquoi un deuxième sous dossier

avec le même nom ?

dans l'état actuel çà donnerai :

"Z:\Dossiers\2021\21.50718\4 Plans + approbation\21.50718\50718-1.pdf ??

Je sais pas, je suis parti de l'énoncé de départ où le nom du sous-dossier apparaissait à nouveau dans le nom du sous-sous-dossier "Plan avec ...". Ce n'est pas mon ordinateur, je le jure !

J'ai corrigé mais ca ne va toujours pas :(

voici l'erreur qui s'affiche:

image image

Est-ce que vous n'auriez pas fait un premier essai et ouvert le document par hasard ?

Est-ce que vous avez au moins adobe reader ?

Edit : Et il y a quelque chose que je n'ai pas relevée mais, en principe, il est préférable de ne pas avoir de "." dans les noms de dossier. Je ne pense pas que ce soit ça mais sait-on jamais...

Cdlt,

Je travaille dans le document de base et l'erreur se produit quand je tente d'enregistrer.

Oui j'ai bien adobe :)

J'avais un tiret dans le nom de fichier que j'ai enlevé par sécurité mais ca ne change rien.. il revient toujours à la ligne

.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, ignoreprintareas:=False

Oui mais vous ne pouvez pas créer un pdf si un pdf portant exactement le même nom complet est ouvert. C'est ça le problème ?

je n'ai aucun pdf ouvert du même nom.

voici le fichier en annexe, peut être cela vous aidera-t-il?

74test.xlsm (107.10 Ko)

C'est bien : 21.50718 qui se trouve en cellule P33 de la page en cours (celle à exporte) ?

C'est l'onglet selection que vous exportez en pdf ? 

Bonjour,

Oui ici je souhaite que l'onglet sélection soit imprimé en pdf, sous le nom 506702 et dans le fichier 21.50670 :)

Bonjour,

De mon côté, ça marche très bien. Ce que je propose, c'est de tester l'existence de chacun des dossiers du chemin et de créer ceux qui n'existent pas (finalement, tu avais raison Xmenpl !) :

sub exportpdf()

dim nompdf$, sousdoss$, chemin$

with activesheet
    nompdf = .range("Q12").value & ".pdf"
    sousdoss = .range("Q13").value
    rep = "Z:\Dossiers\2021\" & sousdoss & "\4 Plans + approbation"
    temp = split(rep, "\")
    test = temp(0)
    for i = 1 to ubound(temp)
        test = test & "\" & temp(i)
        if dir(test, vbdirectory) = "" then
            if msgbox("le dossier " & test & " n'existe pas !" & vblf & vblf & _
                "Voulez-vous le créer ?", vbyesno) = vbyes then mkdir test else exit sub
        end if
    next i
    chemin = rep & "\" & nompdf
    .exportasfixedformat type:=xltypepdf, filename;=chemin, ignoreprintareas:=false
end with

end sub

Cdlt,

Gros méaculpa, le dossier existait mais pas en 2021... ca fonctionne !!

Un grand merci à tous !

Hum hum ! Au moins, maintenant ça marche !

Bonne fin de journée,

Hum hum ! Au moins, maintenant ça marche !

Bonne fin de journée,

Rechercher des sujets similaires à "enregistrer pdf nom destination"