Enregistrer onglets excels en les recherchant par leur nom dans une cellule

Bonjour,

je souhaiterais enregistrer certains onglets de mon classeur en les cherchant par leur nom dans des cellules.

C'est à dire, si je renseigne un nom d'onglet dans une cellule, je voudrais que VBA puisse trouver cet onglet et l'enregistrer en PDF dans un chemin.

Est-ce possible ? merci d'avance.

Bonjour,

Supposons que vous ayez une liste de validations avec vos noms de feuille en A1 de la feuille Recap :

Sub EnregistrerPDF()

dim nomfeuille$, nompdf$

nomfeuille = Sheets("Recap").range("A1").value
nompdf = nomfeuille & " " & format(now, "YYMMDD-HHMMSS") & ".pdf"

if nomfeuille = "" then
    msgbox "Veuillez sélectionner un nom de feuille"
    exit sub
else
    Sheets(nomfeuille).exportasfixedformat type:=xltypepdf, filename:=nompdf, ignoreprintarea:=false
    msgbox "PDF édité avec succès"
end if

End sub

Cdlt,

Bonjour,

j'ai créé une liste déroulante dans votre exemple mais j'ai une erreur "1004". je n'ai pas besoin d'avoir la date dans le nom du fichier PDF (format(Now, "YYMMDD-HHMMSS"))

le plus simple pour moi c'est d'avoir 3 cellules avec les noms des onglets sans créer de liste déroulante :

nom onglet 1 = cellule C1 (de la feuille export)

nom onglet 2 = cellule C2 (de la feuille export)

nom onglet 3 = cellule C3 (de la feuille export)

il faudrait que via un script, VBA reconnaisse la cellule C1 comme si c'était l'onglet 1 et l'exporte en PDF.

et dans la phrase d'export du script, qu'il y ait le chemin où enregistrer le PDF.

un exemple de script que je voudrais faire fonctionner (je suis novice dans VBA) :

Sub EnregistrerPDF()

Dim Feuilleselect As String --> je ne sais si string est le bon terme dans VBA

Feuilleselect = Sheets("EXPORT PDFS").Range("C1").Value --> ici je voudrais que la variable Feuilleselect faire référence à un onglet dont le nom est dans la cellule C1 de l'onglet "EXPORT PDFS"
Worksheets("Feuilleselect").Select --> pour sélectionner l'onglet Feuilleselect

Sheets(Feuilleselect).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\chemin\\nomdel'onglet.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

--> cette dernière ligne pour enregistrer l'onglet Feuilleselect dans un chemin précis.

End Sub

merci d'avance pour votre aide.

merci d'avance.

L'erreur vient probablement d'un petit s oublié sur un des paramètres...

Que voulez-vous exactement ? Exporter plusieurs onglets d'un coup : alors la solution de plusieurs cellules est bonne ou exporter un seul ?

Quel chemin voulez-vous ? Est-il fixe, peut-il varier selon des critères définis ou sera-t-il à sélectionner ?

Sub EnregistrerPDF()

dim nomfeuille$, nompdf$

nomfeuille = Sheets("export").range("C1").value '<<< adapter nom
nompdf = nomfeuille & ".pdf" 'nom fichier

if nomfeuille = "" then 'si C1 vide, sortie
    msgbox "Veuillez sélectionner un nom de feuille"
    exit sub
else 'sinon
    Sheets(nomfeuille).exportasfixedformat type:=xltypepdf, filename:=nompdf, ignoreprintareas:=false 'export dans le dossier courant
    msgbox "PDF édité avec succès"
end if

End sub

Edit : la date sert à éviter d'avoir une erreur lorsque le nom de fichier existe déjà...

Cdlt,

merci de votre réponse. d'accord je comprends mieux l'histoire de la date.

oui je souhaiterais exporter plusieurs onglets d'un coup d'où les plusieurs cellules me conviennent.

le chemin est fixe, je sais qu'il faut définir chemin comme cela :

chemin = "nom du chemin"

puis reprendre le terme chemin dans cette phrase du script :Sheets(Feuilleselect).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\chemin\nomdel'onglet.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Alors essayez ceci :

Sub EnregistrerPDF()

dim nomfeuille$, nompdf$, chemin$

for i = 1 to 3
    nomfeuille = Sheets("export").cells(i, 3).value '<<< ADAPTER : nomfeuille = cellule en ligne i de la colonne 3 (cad colonne C)
    nompdf = nomfeuille & ".pdf" 'nom fichier
    chemin = "C:\exemple\" & nompdf 'chemin complet
    if not FeuilleExiste(nomfeuille) then 'si feuille n'existe pas (voir function plus bas)
        msgbox "Feuille " & nomfeuille & " inexistante : échec de l'export" 'msg
    else 'sinon
        Sheets(nomfeuille).exportasfixedformat type:=xltypepdf, filename:=chemin, ignoreprintareas:=false 'export pdf
    end if
next i

End sub

function FeuilleExiste(NomFeuille$) as boolean
on error resume next
FeuilleExiste = Sheets(NomFeuille).index
end function

Cdlt,

super vous êtes un génie ! le script me cherche bien les bons fichiers et me les exporte au bon endroit.

j'ai une dernière demande. j'aimerais que les 3 fichiers exportés (qui ont les noms des cellules C1, C2 et C3) aient le nom des cellules en D1, D2 et D3.

est-ce possible ?

merci d'avance.

.

Oui c'est possible :

Sub EnregistrerPDF()

dim nomfeuille$, nompdf$, chemin$

for i = 1 to 3
    nomfeuille = Sheets("export").cells(i, 3).value '<<< ADAPTER : nomfeuille = cellule en ligne i de la colonne 3 (cad colonne C)
    nompdf = Sheets("export").cells(i, 4).value & ".pdf" 'nom fichier
    chemin = "C:\exemple\" & nompdf 'chemin complet
    if not FeuilleExiste(nomfeuille) then 'si feuille n'existe pas (voir function plus bas)
        msgbox "Feuille " & nomfeuille & " inexistante : échec de l'export" 'msg
    else 'sinon
        Sheets(nomfeuille).exportasfixedformat type:=xltypepdf, filename:=chemin, ignoreprintareas:=false 'export pdf
    end if
next i

End sub

function FeuilleExiste(NomFeuille$) as boolean
on error resume next
FeuilleExiste = Sheets(NomFeuille).index
end function

Cdlt,

super tout fonctionne ! merci beaucoup pour votre rapidité, disponibilité et efficacité !

Très bonne journée à vous.

Cdt

Merci, très bonne journée à vous aussi !

Rechercher des sujets similaires à "enregistrer onglets excels recherchant leur nom"