RESOLU par Cathodique - création PDF d'un onglet

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

En espérant que vous allez tous bien, me revoilà devant vous avec un souci que je n'arrive pas à résoudre.

C'est d'ailleurs peut-être plus un souci "informatique" qu'un souci purement excel.

Voici mon petit exposé :
Quand un nouveau client frappe à ma porte, je lui envoie un fichier à compléter et à lire pour le fonctionnement de notre relation, ce classeur contient plusieurs onglets ainsi que l'onglet "conditions" de collaboration (le contrat qui va nous lier en fait).

Pour simplifier les manipulations de mon futur client, j'ai besoin d'intégrer une macro pour sauvegarder l'onglet concerné sous Pdf (jusque là, tout va bien).

Mon besoin est que ce PDF s'enregistre sur le bureau de mon client
Mon ordinateur est en réseau et en partage et l'enregistrement du PDF ne se fait pas directement sur C:\Desktop\

Avec un Client ami, j'ai tenté la macro :
Code:
Sub PDFConditions()
    ChDir "C:\Desktop"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Desktop\Partenariat isiTel Signature.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End Sub

ça ne fonctionne pas et il a l'erreur 76, "excel/erreur-76-chemin-d-acces-introuvable"

Votre aide me serait précieuse.
Pourriez-vous m'aider ? je joins un fichier test

Avec mes remerciements,
Je vous souhaite, à toutes et à tous une très bonne journée,
 

Pièces jointes

  • TestPDF.xlsm
    18.3 KB · Affichages: 20
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Re-Bonjour à toutes et à tous,

Mon besoin a changé suite à mes recherches.

J'ai trouvé sur le site : Macro pour enregistrer une feuille sous un nom précis : Excel - VBA

Elle est de LAZADE que j'ai remercié bien entendu.
Cette macro répond presque à mon besoin et je l'ai modifié pour l'adapter :
Code:
Option Explicit

Public Sub Enregistrement()

    Dim ChDir As String
    Dim NomFichier As String
    Dim NomCompletFichier As String
    Dim Site As String
    Dim nom As String
    Dim Matricule As String
    
    ChDir = Application.ActiveWorkbook.Path 'Chemin courant
    'ChDir = "G:\Bordereau\"
    Site = "isiTel accord Partenariat"
    'Site = Me.Range("A1").Value
    nom = Range("A1")
    Matricule = ""
    'Matricule = Me.range("A1").Value

    NomFichier = nom & " " & Site & " " & Matricule
    'Ligne définitive :
    'NomCompletFichier = ChDir & "\" & NomFichier
    
    'Pour les tests, on ajoute l'heure au nom de fichier ; ainsi, il n'y a pas de doublon de noms
    '    Dim stHeureExport As String
    '    stHeureExport = "_" & _
    '        Format(Hour(Time), "00") & "" & Format(Minute(Time), "00") & "" & _
    '        Format(Second(Time), "00")
    NomCompletFichier = ChDir & "\" & NomFichier '& stHeureExport

    'Copie de la feuille courante dans un nouveau classeur et enregistrement
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=NomCompletFichier
    ActiveWorkbook.Close
    
    MsgBox "le fichier a été enregistré sous le nom : " & vbCrLf & NomCompletFichier
End Sub

cette macro enregistre bien là ou est le fichier d'origine.
c'est à dire que si l'on est sur le bureau, le fichier s'enregistre sur le bureau etc....
et elle enregistre l'onglet actif.
Classeur en pièce jointe.


Mais voilà !!!
L'enregistrement se fait sous excel et j'ai besoin qu'il se fasse en PDF et je n'arrive pas à l'adapter pour cela.

Si quelqu'un peut m'aider, ce serait super.

Avec mes remerciements,
Je vous souhaite une bonne fin de journée,
Amicalement,
Lionel,
 

Pièces jointes

  • Sauvegarde feuille active sous Excel sur le bureau.xls
    41 KB · Affichages: 16
  • Sauvegarde feuille active sous Excel sur le bureau.xls
    41 KB · Affichages: 13

cathodique

XLDnaute Barbatruc
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

essaie avec ceci
VB:
Sub PDFConditions()
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\" & Environ("username") & "\Desktop\Partenariat isiTel Signature.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub
ou ceci
VB:
Sub enPdf()
ActiveSheet.ExportAsFixedFormat 0, "C:\Users\" & Environ("username") & "\Desktop\Partenariat isiTel Signature.pdf"
End Sub
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Re-Bonjour,

J'avais déjà :
Code:
'ChDir "C:\Desktop"
'    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
'        "C:\Desktop\Partenariat isiTel Signature.pdf", Quality:= _
'        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
'        OpenAfterPublish:=False

qui fonctionne bien mais qui ne répond pas à mon besoin d'enregistrer là ou est le fichier d'origine.

Ta seconde macro beug en erreur 1004.

Juste une petite précision, la macro dans le classeur joint correspond bien :
-cette macro enregistre bien là ou est le fichier d'origine.
c'est à dire que si l'on est sur le bureau, le fichier s'enregistre sur le bureau etc....
et elle enregistre l'onglet actif.
- elle inclue le nom de mon client dans le nom du fichier,

Le seul souci c'est que c'est sous excel au lieu d'être en PDF.

Ce que je n'arrive pas faire :
S'il est possible d'intégrer la ligne :
Code:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF
dans la macro, ce serait super.

Encore un grand merci.
Amicalement,
Lionel,
 

cathodique

XLDnaute Barbatruc
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

J'avais compris que tu voulais enregistrer en pdf. Alors si tu veux à partir de ton fichier, créer un fichier xl et y copier ta feuille, voici un code et adapte à ta guise.
VB:
Option Explicit
Sub Copier_Feuille_New_Classeur()
    Dim NomDossier As String, NomSousDossier As String, Chemin As String, Fichier As String, NomFichier As String
    Dim F As Worksheet, Rep, wbkc As Workbook, Fd As Workbook, NomOnglet As String, repert As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set Fd = ThisWorkbook

    NomDossier = "RAPPORTS"          'à adapter
    NomSousDossier = "tigeline001"   'à adapter
    NomOnglet = "Rapport"            'à adapter
   
    NomFichier = "destination_donnees"      'à adapter

    Chemin = ThisWorkbook.Path 'chemin du classeur en cours

    ChDir Chemin    'se place sur le repertoire du programme

    If Dir(Chemin & "\" & NomDossier, vbDirectory) = "" Then
        MkDir Chemin & "\" & NomDossier
    End If

    ChDir Chemin & "\" & NomDossier
    If Dir(Chemin & "\" & NomDossier & "\" & NomSousDossier, vbDirectory) = "" Then
        MkDir Chemin & "\" & NomDossier & "\" & NomSousDossier
    End If

    repert = Chemin & "\" & NomDossier & "\" & NomSousDossier
    ChDir repert

    Fichier = repert & "\" & NomFichier

    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    If Dir(Fichier) <> "" Then
        Set wbkc = Workbooks.Open(Fichier)
        For Each F In ActiveWorkbook.Worksheets
            If F.Name = NomOnglet Then
                Rep = MsgBox("La feuille " & NomOnglet & " existe déjà," & Chr(10) & "Voulez-vous l'écraser?", vbYesNo, "Existe?")
                If Rep = vbNo Then wbkc.Close: GoTo 2
                Fd.Sheets("nom de l'ongle à copier").Cells.Copy wbkc.Sheets(NomOnglet).Cells
                wbkc.Close 1
                GoTo 1
            End If
        Next F
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = NomOnglet
        Fd.Sheets("Rapport").Cells.Copy wbkc.Sheets(NomOnglet).Cells
        wbkc.Close 1
    Else
        Workbooks.Add (-4167): ActiveWorkbook.SaveAs Fichier
        Sheets("Feuil1").Name = NomOnglet
        Set wbkc = ActiveWorkbook
        Fd.Sheets("Rapport").Cells.Copy wbkc.Sheets(NomOnglet).Cells
        wbkc.Close 1
1   End If

    MsgBox "Opération terminée!" & Chr(10) & Chr(10) & "Le Fichier a été enregistré dans le répertoire:" _
         & Chr(10) & Chr(10) & Fichier, vbInformation
2
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
Est-ce que ça te conviens?
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Re,

Je suis vraiment désolé, je m'explique très mal et je te fais perdre ton temps.
Acceptes toutes mes excuses.

Je tente de repositionner LOL

1 - tu avais très bien compris, c'est bien un onglet de mon fichier excel que j'ai besoin d'enregistrer en PDF (pas de créer un autre fichier excel).

2 la macro suivante que j'ai récupéré et que j'ai modifié est dans le fichier que je joins à ce post.:
Code:
[Option Explicit

Public Sub Enregistrement()

    Dim ChDir As String
    Dim NomFichier As String
    Dim NomCompletFichier As String
    Dim Site As String
    Dim nom As String
    Dim Matricule As String
    
    ChDir = Application.ActiveWorkbook.Path 'Chemin courant
    'ChDir = "G:\Bordereau\"
    Site = "accord Partenariat isiTel"
    'Site = Me.Range("A1").Value
    nom = Range("A1")
    Matricule = ""
    'Matricule = Me.range("A1").Value

    NomFichier = nom & " " & Site & " " & Matricule
    'Ligne définitive :
    'NomCompletFichier = ChDir & "\" & NomFichier
    
    ''Pour les tests, on ajoute l'heure au nom de fichier ; ainsi, il n'y a pas de doublon de noms
    '    Dim stHeureExport As String
    '    stHeureExport = "_" & _
    '        Format(Hour(Time), "00") & "" & Format(Minute(Time), "00") & "" & _
    '        Format(Second(Time), "00")
    NomCompletFichier = ChDir & "\" & NomFichier '& stHeureExport

    ''Copie de la feuille courante dans un nouveau classeur et enregistrement
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=NomCompletFichier
    ActiveWorkbook.Close
    
    MsgBox "le fichier a été enregistré sous le nom : " & vbCrLf & NomCompletFichier
End Sub/CODE]

[B]Si tu testes mon fichier, tu verras qu'elle exécute les actions suivantes[/B] :

-Elle enregistre bien le document là ou est le fichier d'origine.
c'est à dire que si l'on est sur le bureau, le fichier s'enregistre sur le bureau, si on est dans un dossier, elle enregistre dans le dossier etc.... et elle enregistre bien l'onglet actif.

- elle inclue le nom de mon client dans le nom du fichier,

[B]Le seul souci c'est que qu'elle enregistre l'onglet sous excel[/B] au lieu d'enregistrer en PDF.

Ce que je n'arrive pas faire :
[B]Je n'arrive pas à trouver le code "qui va bien" pour lui dire [U][U]que c'est en PDF qu'il faut enregistrer l'onglet actif[/U][/U].[/B]

Bon sang, j'espère que je suis un peu plus clair car c'est déjà tellement génial que tu prennes de ton temps pour rendre tant de services et je ne veux pas, en plus, t'en faire perdre.

Un grand Merci.
Si tu veux encore me répondre, c'est peut-être mieux de me dire si je me suis mieux expliqué avant de chercher la solution :o

Vraiment Merci,
Amicalement,
Lionel,
 

Pièces jointes

  • Sauvegarde feuille active sous Excel sur le bureau.xls
    39.5 KB · Affichages: 12
  • Sauvegarde feuille active sous Excel sur le bureau.xls
    39.5 KB · Affichages: 14
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

J'oubliais,

le nom du fichier joint est : Sauvegarde feuille active sous Excel sur le bureau

C'est parce qu'il sauvegarde sous Excel

mais j'ai besoin que l'onglet soit sauvegardé en PDF.

C'est peut-être de la que provient la méprise.

Amicalement,
Lionel,
 

cathodique

XLDnaute Barbatruc
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Attends un peu, une mise au point s'impose. Tu voudrais enregistrer un onglet au format pdf, là où se trouve ton fichier excel (le même chemin), est-ce bien ça?

J'attends ton retour.

@+
 

cathodique

XLDnaute Barbatruc
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

d'après ce que j'ai compris et c'est fonctionnel (j'ai testé chez-moi)
VB:
Option Explicit
Sub Onglet_en_PDF()
    Dim Chemin As String, Fichier As String, NomFichier As String, site As String, nom As String, Matricule As String

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    site = "accord Partenariat isiTel"
    'Site = Me.Range("A1").Value
    nom = Range("A1")
    Matricule = ""
    
    NomFichier = nom & " " & site & " " & Matricule & ".pdf"
    Chemin = ThisWorkbook.Path

    ChDir Chemin    'se place sur le repertoire du programme

   Fichier = Chemin & "\" & NomFichier

    If Dir(Fichier) <> "" Then If MsgBox("Le fichier existe déjà," & Chr(10) & _
                                         "Voulez-vous l'écraser?", vbYesNo) = vbNo Then GoTo suite:
   
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier, Quality:=xlQualityStandard, _
                                  IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    MsgBox "Opération terminée!", vbInformation

suite:

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Re,

Oui la macro est bien fonctionnelle sauf qu'elle copie)enregistre le classeur excel sous un autre classeur excel.

Mais mon besoin est d'enregistrer l'onglet actif de mon classeur sous PDF et pas de faire un autre classeur excel.


Pour le reste, rien à toucher, c'est tout bon LOL

Code:
Attends un peu, une mise au point s'impose. Tu voudrais enregistrer un onglet au format pdf, là où se trouve ton fichier excel (le même chemin), est-ce bien ça?

c'est ça et la macro le fait très bien.

Encore merci,
Bonne soirée,
Amicalement,
Lionel,
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Re,

Après test chez moi .... super ça marche. je testerai encore mieux demain mais ça me semble tout bon.

je te remercie vraiment et je suis désolé de m'être mal expliqué.

Tu me rends là un grand service et je vais décortiquer le code pour comprendre.
Encore Merci,
Bon WE.
Amicalement,
Lione,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro création PDF d'un onglet enregistré sur le bureau de l'utilisateur

Bonjour Cathodique,
Bonjour à toutes et à tous,

Après test et manipulations, ça marche super bien.

Encore un grand MERCI à toi Cathodique et à tous pour être toujours présents pour nous aider.

Je joins le fichier qui pourra, je l'espère, servir à d'autres.

Il me reste un souci complémentaire.

Je souhaite faire signer électroniquement un onglet "bon pour accord".
J'ai trouvé comment créer une signature électronique mais je n'arrive pas à créer automatiquement par macro cette signature électronique.

Je vais ouvrir un autre post pour cela.

Bon dimanche à toutes et à tous,
Amicalement,
Lionel,
 

Pièces jointes

  • Sauvegarde feuille active Excel ou PDF à l'emplacement classeur origine.xls
    44.5 KB · Affichages: 19
  • Sauvegarde feuille active Excel ou PDF à l'emplacement classeur origine.xls
    44.5 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 445
Messages
2 088 488
Membres
103 869
dernier inscrit
benji_270