XL 2010 SOS enregistrement en PDF ne fonctionne plus

superbog

XLDnaute Occasionnel
Bonsoir,

Je ne sais plus que faire, j'ai une macro qui fonctionne depuis des lustres pour enregistrer une feuille en PDF. Je l'ai recopié dans un nouveau fichier, en changeant juste le chemin. A la première utilisation elle a parfaitement fonctionné et là elle ne veut plus.

Lorsque je lance la macro, j'ai une fenêtre erreur d’exécution
upload_2016-10-12_20-28-15.png


j'ai vérifié le pdf n'existe pas et n'est donc pas ouvert.

voici la partie de la macro qui semble ne pas fonctionner (fichier joint)
VB:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=_"C:\Users\BAB\DX\GESTION MAMAN\QUITTANCES\" & nomNewClasseur, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, from:=1, To:=1, OpenAfterPublish:=True

merci d'avance de votre aide
 

Pièces jointes

  • TESTI PDF.xlsm
    57.5 KB · Affichages: 46
Dernière édition:

Hieu

XLDnaute Impliqué
Salut,

Il est difficile de vérifier sans fichier (sans donnees conficdentielles)...
En faisant un enregistrement de macro, il y a un bout, qui ne ressort pas:
VB:
nomNewClasseur = Range("A12") & "quittance -" & Range("C4") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\BAB\DX\GESTION MAMAN\QUITTANCES\" & nomNewClasseur, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False,  OpenAfterPublish:=False

Rien à voir, mais plutot que de créer une étiquette "300" pour la condition vide, pourquoi ne pas avoir fait :
VB:
If  IsEmpty(sh2.Cells(i, 7)) Then
...
End If

++
 

Hieu

XLDnaute Impliqué
Salut,

Trouvé :

Le nom du pdf ne doit pas contenir de "/" ; voilà le problème:
Voici une idée :
VB:
chemin = ThisWorkbook.Path & "\"
nomNewClasseur = Range("A12") & "quittance -" & Format(Range("C4"), "ddmmyyyy") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & nomNewClasseur, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Du coup, la question subsidiaire est : comment la macro tournait avant ??
 

superbog

XLDnaute Occasionnel
Salut,

Trouvé :

Le nom du pdf ne doit pas contenir de "/" ; voilà le problème:
Voici une idée :
VB:
chemin = ThisWorkbook.Path & "\"
nomNewClasseur = Range("A12") & "quittance -" & Format(Range("C4"), "ddmmyyyy") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & nomNewClasseur, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Du coup, la question subsidiaire est : comment la macro tournait avant ??

Non la macro fonctionne très bien d'origine avec \ d'ailleurs c'est ainsi que l'enregistreur de macro le note
VB:
 ChDir "C:\Users\BB\DX\GESTION MAMAN\QUITTANCES\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\BB\DX\GESTION MAMAN\QUITTANCES\Immeubles.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

donc le problème est ailleurs car
1°) j'ai essayé avec votre solution cela ne fonctionne pas
2°) cela marchait avant
3°) encore plus bizarre, la macro d'origine (seul le chemin est différent) fonctionne toujours
4°) j'ai essayé de changer le classeur de place dans mon disque dur, cela ne change rien

HELP :mad:o_O
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour
Votre dernier code semble suggérer que le sous dossier dans lequel doit être enregistré le fichier ne porte pas de nom…
Est-ce possible ?
Après un ChDir le dossier spécifié devient le chemin courant pour son lecteur.
En ajoutant une instruction ChDrive "C" par sécurité, vous n'auriez plus besoin de le préciser au ExportAsFixedFormat, juste le nom du fichier.
 

superbog

XLDnaute Occasionnel
Bonjour
Votre dernier code semble suggérer que le sous dossier dans lequel doit être enregistré le fichier ne porte pas de nom…
Est-ce possible ?
Après un ChDir le dossier spécifié devient le chemin courant pour son lecteur.
En ajoutant une instruction ChDrive "C" par sécurité, vous n'auriez plus besoin de le préciser au ExportAsFixedFormat, juste le nom du fichier.

pardon non le dernier code que vous voyez est juste un enregistrement macro test, le sous dossier s'appelle quittances tout simplement, le double \\ était une erreur de frappe que j'ai corrigé.
Par contre je ne comprend pas bien votre proposition concernant le ChDrive, pourriez vous me donner un exemple?
 

Dranreb

XLDnaute Barbatruc
Voila par exemple :
VB:
Option Explicit

Sub Main()
ProduirePdf ThisWorkbook.Path, "Toto"
End Sub

Sub ProduirePdf(ByVal Doss As String, ByVal NomFic As String)
On Error Resume Next
ChDrive Doss: ChDir Doss
If Err Then MsgBox "Impossible d'accéder au dossier """ & Doss & """." _
  & vbLf & Err.Description, vbCritical, "ProduirePdf": Exit Sub
If LCase$(Right$(NomFic, 4)) <> ".pdf" Then NomFic = NomFic & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFic, _
  Quality:=xlQualityStandard, IncludeDocProperties:=True, _
  IgnorePrintAreas:=False, OpenAfterPublish:=True
If Err Then MsgBox "Impossible de créer """ & NomFic & """ sur :" & vbLf & CurDir _
  & vbLf & Err.Description, vbCritical, "ProduirePdf"
End Sub
Au lieu de "Toto" vous pouvez bien sûr mettre une expression String telle que la concaténation par des "&" d'éléments fixes et variables, dont des Value d'expressions Range.
 
Dernière édition:

superbog

XLDnaute Occasionnel
Voila par exemple :
VB:
Option Explicit

Sub Main()
ProduirePdf ThisWorkbook.Path, "Toto"
End Sub

Sub ProduirePdf(ByVal Doss As String, ByVal NomFic As String)
On Error Resume Next
ChDrive Doss: ChDir Doss
If Err Then MsgBox "Impossible d'accéder au dossier """ & Doss & """." _
  & vbLf & Err.Description, vbCritical, "ProduirePdf": Exit Sub
If LCase$(Right$(NomFic, 4)) <> ".pdf" Then NomFic = NomFic & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFic, _
  Quality:=xlQualityStandard, IncludeDocProperties:=True, _
  IgnorePrintAreas:=False, OpenAfterPublish:=True
If Err Then MsgBox "Impossible de créer """ & NomFic & """ sur :" & vbLf & CurDir _
  & vbLf & Err.Description, vbCritical, "ProduirePdf"
End Sub
Au lieu de "Toto" vous pouvez bien sûr mettre une expression String telle que la concaténation par des "&" d'éléments fixes et variables, dont des Value d'expressions Range.

j'ai mis en oeuvre mais il y a l'erreur suivante
"impossible de créer "toto.pdf" sur : C:\Users\BB\DX\GESTION MAMAN\QUITTANCES
document non enregistré. Le document est peut-être ouvert ou une erreur s'est produite lors de l'enregistrement
.

or le document n'est pas ouvert et quand je fais l'enregistrement manuellement cela fonctionne...

arg....
 

Discussions similaires