XL 2016 erreur d'affichage sur une boîte de dialogue pour exporter en pdf

halecs93

XLDnaute Impliqué
Bonjour à toutes et à tous....

Je tente de finaliser, grâce à mes bidouillages et aux conseils donnés ici, mon fichier permettant de créer des organigrammes. Je souhaitais pouvoir exporter le fichier créer en pdf grâce à une macro. Curieusement, la macro fonctionne mais, dans la boîte de dialogue le nom de fichier apparaît avec l'extension xlsx pour finalement se nommer xlsx.pdf à la sauvegarde. Je n'arrive pas à régler le souci.

L'ensemble du code VBA va sembler bien lourd aux spécialistes, mais encore une fois, je bricole.

Je mets le fichier en pj et une copiee d'écran.

Merci beaucoup
erreur organigramme.jpg
 

Pièces jointes

  • ORGANIGRAMME 9 - 4 NIVEAUX - text.xlsm
    38.5 KB · Affichages: 12
Solution
C
Re,

Pour moi il y a confusion dans le code 🤔

Votre Sub s'intitule "ExporterShapesEnJPG" alors qu'au final vous voulez un PDF

Donc voici un code plus simple qui devrait convenir
Code:
Sub ExporterEnPDF()
  Dim Ws As Worksheet
  Dim CheminNomPDF As String
  ' Spécifiez la feuille contenant l'organigramme
  Set Ws = ThisWorkbook.Sheets("ORGANIGRAMME")
  ' Demande le chemin et nom du fichier
  CheminNomPDF = Application.GetSaveAsFilename("Organigramme.pdf", _
    FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Enregistrer l'organigramme en tant que fichier PDF")
  '
  If CheminNomPDF <> "Faux" Then
      ' Définissez les paramètres de mise en page pour s'ajuster à une seule page
      With Ws.PageSetup
          .Zoom = False...
C

Compte Supprimé 979

Guest
Bonjour halec93

Vous avez raison au #3, kiki29 ne sait plus que donner le lien vers son fichier fourre tout, sans aucune explication (pourquoi se fatiguer, bravo l'aide) :rolleyes:

@job75, pas cool à 22h58 tu aurais mieux d'aller te coucher plus tôt :rolleyes:

La problématique est simple, votre souci vient de cette ligne et notamment de l'option choisie
VB:
Set dlgSave = Application.FileDialog(msoFileDialogSaveAs)
Vous demande a Excel d'afficher la boite de dialogue, "enregistrer sous", donc forcément avec l'extension ".xls*"

Remplacez simplement par
Code:
Set dlgSave = Application.FileDialog(msoFileDialogFilePicker)

Voilà bonne journée ;)
 

halecs93

XLDnaute Impliqué
Bonjour halec93

Vous avez raison au #3, kiki29 ne sait plus que donner le lien vers son fichier fourre tout, sans aucune explication (pourquoi se fatiguer, bravo l'aide) :rolleyes:

@job75, pas cool à 22h58 tu aurais mieux d'aller te coucher plus tôt :rolleyes:

La problématique est simple, votre souci vient de cette ligne et notamment de l'option choisie
VB:
Set dlgSave = Application.FileDialog(msoFileDialogSaveAs)
Vous demande a Excel d'afficher la boite de dialogue, "enregistrer sous", donc forcément avec l'extension ".xls*"

Remplacez simplement par
Code:
Set dlgSave = Application.FileDialog(msoFileDialogFilePicker)

Voilà bonne journée ;)
Bonjour et merci pour votre réponse.

J'ai bien remplacé la ligne... mais cela ne permet pas d'enregistrer l'organigramme en PDF... c'est une boite de dialogue pour ouvrir un document.

Je mets la capture d'écran.

Encore merci.

1687419232985.png
 

halecs93

XLDnaute Impliqué
Re,

Désolé, je n'ai pas compris et je suis allé trop vite

Il faut alors utiliser l'instruction
VB:
Application.GetSaveAsFilename

A+
En effet... l'instruction est bien plus simple. Mais.... la suite du code se met en erreur à la ligne
' Configurez les options de la boîte de dialogue
With dlgSave
.Title = "Enregistrer l'organigramme en tant que fichier PDF"
.InitialFileName = "Organigramme.pdf"

Je pense que c'est à cause de 'With dlgSave' puisqu'il n'apparait plus dans la nouvelle instruction.
 
C

Compte Supprimé 979

Guest
Re,

Pour moi il y a confusion dans le code 🤔

Votre Sub s'intitule "ExporterShapesEnJPG" alors qu'au final vous voulez un PDF

Donc voici un code plus simple qui devrait convenir
Code:
Sub ExporterEnPDF()
  Dim Ws As Worksheet
  Dim CheminNomPDF As String
  ' Spécifiez la feuille contenant l'organigramme
  Set Ws = ThisWorkbook.Sheets("ORGANIGRAMME")
  ' Demande le chemin et nom du fichier
  CheminNomPDF = Application.GetSaveAsFilename("Organigramme.pdf", _
    FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Enregistrer l'organigramme en tant que fichier PDF")
  '
  If CheminNomPDF <> "Faux" Then
      ' Définissez les paramètres de mise en page pour s'ajuster à une seule page
      With Ws.PageSetup
          .Zoom = False
          .FitToPagesWide = 1
          .FitToPagesTall = 1
          .CenterHorizontally = True ' Centre horizontalement la feuille
      End With
      ' Exportez la feuille en tant que fichier PDF
      Ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminNomPDF, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
      ' Petit message
      MsgBox "L'organigramme a été exporté en tant que fichier PDF avec succès."
    End If
End Sub

A+
 

halecs93

XLDnaute Impliqué
Bjr Le Fil, le Forum :)
Peut-être comme dans le fichier joint
:)
C'est une autre approche en effet. Mais je crois qu'elle ne permet pas de choisir le dossier de sauvegarde, ni le nom du fichier à sauvegarder.
Re,

Pour moi il y a confusion dans le code 🤔

Votre Sub s'intitule "ExporterShapesEnJPG" alors qu'au final vous voulez un PDF

Donc voici un code plus simple qui devrait convenir
Code:
Sub ExporterEnPDF()
  Dim Ws As Worksheet
  Dim CheminNomPDF As String
  ' Spécifiez la feuille contenant l'organigramme
  Set Ws = ThisWorkbook.Sheets("ORGANIGRAMME")
  ' Demande le chemin et nom du fichier
  CheminNomPDF = Application.GetSaveAsFilename("Organigramme.pdf", _
    FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Enregistrer l'organigramme en tant que fichier PDF")
  '
  If CheminNomPDF <> "Faux" Then
      ' Définissez les paramètres de mise en page pour s'ajuster à une seule page
      With Ws.PageSetup
          .Zoom = False
          .FitToPagesWide = 1
          .FitToPagesTall = 1
          .CenterHorizontally = True ' Centre horizontalement la feuille
      End With
      ' Exportez la feuille en tant que fichier PDF
      Ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminNomPDF, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
      ' Petit message
      MsgBox "L'organigramme a été exporté en tant que fichier PDF avec succès."
    End If
End Sub

A+
En effet...pour le nom de la macro, c'est qu'au début je souhaitais un export sous forme d'image... et je n'ai pas modifié son nom après. Quant à ce code, il marche à la perfection. Merci pour cette approche.
 

Usine à gaz

XLDnaute Barbatruc
Re-Bjr :)
"Mais je crois qu'elle ne permet pas de choisir le dossier de sauvegarde, ni le nom du fichier à sauvegarder."

Code modifié :
Dim Nom$
Nom = ThisWorkbook.Name
ChDir "C:\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\lionel\Desktop\" & ThisWorkbook.Name & " " & [r4] & " " & ".PDF", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Pour le nom : c'est réglé avec :
"C:\Users\lionel\Desktop\" & ThisWorkbook.Name & " " & [n4] & " " & ".PDF", Quality:= _

Pour choisir l'emplacement, ça doit pas être bien difficile mais j'ai pas le temps maintenant.

Voir fichier joint
:)
 

Pièces jointes

  • ORGANIGRAMME 9 - 4 NIVEAUX - text.xlsm
    42.9 KB · Affichages: 2

halecs93

XLDnaute Impliqué
Re-Bjr :)
"Mais je crois qu'elle ne permet pas de choisir le dossier de sauvegarde, ni le nom du fichier à sauvegarder."

Code modifié :
Dim Nom$
Nom = ThisWorkbook.Name
ChDir "C:\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\lionel\Desktop\" & ThisWorkbook.Name & " " & [r4] & " " & ".PDF", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Pour le nom : c'est réglé avec :
"C:\Users\lionel\Desktop\" & ThisWorkbook.Name & " " & [n4] & " " & ".PDF", Quality:= _

Pour choisir l'emplacement, ça doit pas être bien difficile mais j'ai pas le temps maintenant.

Voir fichier joint
:)
Merci beaucoup
 

Discussions similaires

Réponses
12
Affichages
1 K

Statistiques des forums

Discussions
315 094
Messages
2 116 143
Membres
112 669
dernier inscrit
Guigui2502