Problème code VBA

Bonjour à tous.

Je suis débutant dans les codes VBA mais je lis des articles et m'informe avant de me former en achetant un livre.

Mon problème est que j'ai besoin de pouvoir dans une feuille d'un fichier excel 2007 de sauvegarder les factures émises et a partir de leurs numéros de facturation, vers mon dossier C:\Users\imesy\Documents\Dossier Factures

j'ai réussi à pouvoir les sauvegarder, mais hélas les factures vont dans Documents et non dans Dossier Factures.

Voici mon code.

Sub EnregistrementFactures()

'Déclaration des Variables

Dim NomDossier As String

Dim CheminDossier As String

On Error GoTo 1

'nom Dossier

NomDossier = Application.InputBox("Dossier Factures: ", "Dossier")

CheminDossier = "C:\Users\imesy\Documents\Dossier Factures\" & NomDossier & "\"

If NomDossier = "" Then Exit Sub

'Enregistrement au format PDF

nomcomplet = NomDossier & Range("C8") & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

nomcomplet, Quality:= _

xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=False

1

End Sub

Où est l'erreur?

Merci de m'aider

Bonsoir,

votre fichier Excel, lui n'est-il pas dans Documents ?

Car votre code :

'Enregistrement au format PDF
 nomcomplet = NomDossier & Range("C8") & ".pdf"
 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
 nomcomplet, Quality:= _
 xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
 OpenAfterPublish:=False

ne fait jamais référence au chemin d'accès, du coup excel prend celui du classeur par défaut, non ?

@ bientôt

LouReeD

Oui mon Fichier est dans mes documents. Mes factures devraient être dans Dossier Factures. J'ai la même chose avec une feuiile devis qui devrait aller dans Dossier Devis. Mais les deux vont dans Documents

Je vous ai fait une copie de votre code, à aucun moment vous ne faites référence au chemin d'accès !

le "nomcomplet" est égale à : = NomDossier & Range("C8") & ".pdf"

c'est à dire le nom donner dans l'input box (qui du coup est égale au nom du dosser) concatené avec la valeur de la cellule C8 et concatené avec l'extension ".pdf"

Mais où est la référence au chemin d'accès : CheminDossier = "C:\Users\imesy\Documents\Dossier Factures\" & NomDossier & "\" ?

Du coup Excel n'ayant qu'un nom de fichier, il l'enregistre dans le dossier courant.

@ bientôt

LouReeD

oui mais moi, je débute et c'est un peu de l'hébreu pour moi. je ne sais pas comment modifier.

essayez ceci :

'Enregistrement au format PDF
 nomcomplet = CheminDossier &NomDossier & Range("C8") & ".pdf"
 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
 nomcomplet, Quality:= _
 xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
 OpenAfterPublish:=False

A nomcomplet on ajoute la variable CheminDossier et là il n'y a rien d'hébreu, les variables ont le nom de ce qu'elles contiennent...

@ bientôt

LouReeD

Merci j'ai fais comme indiqué, mais toujours le même problème ma facture va dans Documents.

voici le code que j'ai modifié

'Enregistrement au format PDF

nomcomplet = CheminDossier & NomDossier & Range("C8") & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

nomcomplet, Quality:= _

xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=False

Avez vous le fichier ?

@ bientôt

LouReeD

oui bien sur. Mais comment vous le passer?

Je peu vous passer mon fichier si avez un moment pour essayer .

Le fichier est disponible sur ce lien à télécharger

Bonjour à tous,

Testé fonctionnel ...

Sub EnregistrementDevis()

    'Déclaration des Variables
Dim NomDossier As String
Dim CheminDossier As String
Dim NomComplet As String

    On Error GoTo 1

    'nom Dossier
    NomDossier = Application.InputBox("Dossier Enregistrement : ", "Dossier")
    CheminDossier = "C:\Users\imesy\Documents\Dossier Devis\" & NomDossier & "\"
    If NomDossier = "" Then Exit Sub

    'Enregistrement au format PDF
    NomComplet = CheminDossier & Range("C8") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomComplet, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=True, OpenAfterPublish:=False
1

End Sub

ric

Merci pour ton aide.

J'ai changé ma macro par la tienne rectifiée.

Je ne comprends toujours pas , chez moi je n'ai même plus la sauvegarde qui apparait. La macro se lance sans message d'erreur, mais pas de sauvegarde apparente. j'ai lancé une recherche pais pas de trace de la sauvegarde.

Bonjour,

J'ai eu ce problème ... qui provenait du droit d'écriture sur le dossier.

ric

J'ai toutes les autorisations sauf autorisations spéciales.

Bonjour à tous,

J'ai pris le temps de créer un compte imesy sur ma machine ... au lieu de simplement créer les dossiers.

Par contre, le nom du dossier que l'on tape dans InputBox doit exister, il ne sera pas créé.

Le nom du dossier que l'on tape dans InputBox est sensible à la casse.

Les macros EnregistrementFactures et EnregistrementDevis fonctionnent bien.

Sub EnregistrementFactures() 

'Déclaration des Variables
Dim NomDossier As String
Dim CheminDossier As String

 On Error GoTo 1

'nom Dossier
NomDossier = Application.InputBox("Dossier Enregistrement : ", "Dossier")
CheminDossier = "C:\Users\imesy\Documents\Dossier Factures\" & NomDossier & "\"

If NomDossier = "" Then Exit Sub

'Enregistrement au format PDF
NomComplet = CheminDossier & Range("C8") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
NomComplet, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
1

End Sub
Sub EnregistrementDevis()

    'Déclaration des Variables
Dim NomDossier As String
Dim CheminDossier As String
Dim NomComplet As String

    On Error GoTo 1

    'nom Dossier
    NomDossier = Application.InputBox("Dossier Enregistrement : ", "Dossier")
    CheminDossier = "C:\Users\imesy\Documents\Dossier Devis\" & NomDossier & "\"
    If NomDossier = "" Then Exit Sub

    'Enregistrement au format PDF
    NomComplet = CheminDossier & Range("C8") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomComplet, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=True, OpenAfterPublish:=False
1

End Sub

ric

Merci à toi. je vais essayer et te tiens au courant.

Rechercher des sujets similaires à "probleme code vba"