Erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet

Bonjour à tous,

Mon niveau sur VBA étant faible, avant de vous solliciter j'ai cherché dans les sujets traités par le passé pour trouver ma solution, mais rien n'y fait je dois m'en remettre à vous.

Afin de faciliter ma gestion d'une tache, j'ai crée un fichier avec deux onglets, un dans lequel je renseigne les informations sous forme de tableau, et un second onglet qui à partir d'un numéro dans menu déroulant mets en forme les informations du précédent onglet.

J'ai tenté de créer une macro qui permet d'enregistrer automatiquement cette mise en forme sous format PDF et dans un dossier bien spécifique. Néanmoins, quand j'active la macro à partir du bouton, j'ai le code d'erreur 400 qui remonte.

Et lorsque j'active la macro manuellement en F11+Alt, j'ai le code d'erreur : Erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet

Pourriez-vous jeter un œil à mon code et m'indiquer ou je me suis trompé ?

Dim x As String

Sub PassationPDF()
'
' Macro1 Macro
'
'
Application.Calculation = xlAutomatic
Sheets("Edition FNC").Select
Sheets("Edition FNC").Range("a1:j39").EntireRow.Hidden = False
x = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text

rep = MsgBox("Ne pas oublier :" & Chr(13) & "1) Enregistrer le PDF de la FNC dans le dossier correspondant" & Chr(13) & "2) Faire suivre la FNC au Service Achats" & Chr(13) & "3) Les achats feront suivre au fournisseur sous 48h", vbExclamation, "Rappel")

Application.Goto Reference:="Print_Area"
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Y:\Achat\12 GESTION FNC" & x, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True


End Sub

Je vous remercie par avance pour vos réponses :)

Bonjour Anton1,

Normalement en cliquant sur "Débogage", Excel indique la ligne en erreur, ce qui nous serai une précieuse information...

De plus, pense à mettre ton code dans la balise </> la prochaine fois, pour une meilleur lisibilité !

Baboutz

Bonjour Baboutz,

C'est noté je mettrai le code dans la balise la prochaine fois :)

Et lorsque j'utilise le débogage donc F8 pour avancer la macro il me semble que c'est sur la dernière partie du code que cela plante.. que puis je faire pour vous donner plus d'indication ?

Baboutz, je vous confirme que le point d'arrêt se situe dans les 4 dernières lignes de code !

Antonin, je pense que le problème vient du fait que pour ce code :

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

Tu utilises Selection mais tu ne sélectionnes rien avant !

Baboutz,

Mais donc que dois-je renseigner ? J'ai défini une zone d'impression, est-ce qu'il me suffit de taper "Print_Area" ou je dois saisir la plage des cellules concernées ?

Tu n'as renseigné nul part la plage de cellule que tu veux exporter !

Quelle est cette plage ?

Il s'agit de cette plage ci-dessous :

<Sheets("Edition FNC").Range("a1:j39").EntireRow.Hidden = False>

Je dois donc reporter cette plage ("a1:j39") à quel endroit ? avant ou après sélection ?

Désolé je suis vraiment nul je découvre tout juste

Antonin,

Quelque chose dans ce genre, à modifier selon tes besoins :

    'On passe le calcul en automatique
    Application.Calculation = xlAutomatic

    'On déclare les variables
    Dim plagePDF As Range
    Dim Destination, Nom As String

    'On affiche les colonnes masquées
    Sheets("Edition FNC").Range("a1:j39").EntireRow.Hidden = False

    'On attribue la plage à exporter, le chemin du dossier de destination et le nom du PDF
    plagePDF = Sheets("Edition FNC").Range("a1:j39")
    Destination = "Y:\Achat\12 GESTION FNC" & x
    Nom = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text & ".pdf"

    'On exporte la plage voulu en PDF
    plagePDF.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Destination & Nom, Quality:=xlQualityStandard

Baboutz,

Cela fonctionne j'ai réussi à générer le pdf en reprenant certains de tes éléments ! Tu gères merci beaucoup :)

En revanche si je veux que cela s'enregistre automatiquement dans le dossier "12 GESTION FNC" et que cela porte comme nom de fichier des infos que je retrouve dans certaines cellules il faut rajouter une ligne de code ? Je presume !

Super Antonin !

Normalement non... Le code que je t'ai fourni le fait !

Regarde ce bout de code : Filename:=Destination & Nom

Il indique le lieux de l'enregistrement ainsi que le nom du fichier !

Et le nom je lui avait affecté ce que tu souhaitais avec le code :

Nom = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text & ".pdf"

Oui je sais mais cela m'indique une erreur dans le code je ne comprends pas ;

< Application.Goto Reference:="Print_Area"
Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Y:\Achat\12 GESTION FNC" & x, = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & ".pdf", Quality:=
xlQualityStandard , IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=True >

Les lignes en defaut sont celles en gras :(

Mais !? Ce n'est pas du tout le code que je t'ai fourni... Ça c'est ton code de départ !

Le code que je t'ai fourni, je l'ai adapté à ton cas !

Bon sang j'avais deux fichiers ouvert avec deux noms différents j'ai fermé le mauvais, celui qui fonctionné avec ton code, j'ai envie de me pendre ca ma rendu fou !!!

Voici la ligne de code en question :

< Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat Type:=xlTypePDF, Filename:= "Y:\Achat\12 GESTION FNC" & x, = Range("C4").Text & "PO" & Range("C7") & "Ref" & Range("C9").Text ".pdf", Quality:=xlQualityStandard

End Sub >

Ahah pas de soucis !

Montre moi tout le code stp, j'aurai une vision plus globale.

PS :

Pour mettre ton code dans l'espace code, il faut que tu cliques sur </> lors de la rédaction de ton message !

image

Ah bon sang moi je mettais les guillemets à l'entrée et à la fin mdr il est temps que cette semaine s'achève pour mon cerveau je crois :)

Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat
Type:=xlTypePDF, Filename:= "Y:\Achat\12 GESTION FNC" & x, = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text ".pdf",
Quality:=xlQualityStandard

End Sub

Voici le code qui est en défaut, cela me signale que c'est à partir de la deuxième ligne

Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat
Type:=xlTypePDF, Filename:= "Y:\Achat\12 GESTION FNC" & x, = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text ".pdf",
Quality:=xlQualityStandard

End Sub

Dans ton code, il y a un & x mais as-tu défini ce qu'est x ?

Ensuite tu as un = !!

Tu devrais plutôt avoir comme code :

Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat
Type:=xlTypePDF, Filename:= "Y:\Achat\12 GESTION FNC" &  Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text ".pdf", Quality:=xlQualityStandard

Et ne t'inquiète pas, c'est normal quand on a pas l'habitude du site

Non ca ne marche toujours pas cela me dit ;

Erreur de compilation : Erreur de syntaxe

Dim x As String

Sub PassationPDF()
'
' Macro1 Macro
'
'
 Application.Calculation = xlAutomatic
Sheets("Edition FNC").Select
Sheets("Edition FNC").Range("a1:j39").EntireRow.Hidden = False
x = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text

rep = MsgBox("Ne pas oublier :" & Chr(13) & "1) Enregistrer le PDF de la FNC dans le dossier correspondant" & Chr(13) & "2) Faire suivre la FNC au Service Achats" & Chr(13) & "3) Les achats feront suivre au fournisseur sous 48h", vbExclamation, "Rappel")

Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat
Type:=xlTypePDF, Filename:= "Y:\Achat\12 GESTION FNC" & Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text ".pdf",
Quality:=xlQualityStandard

End Sub

Je ne comprends pas j'ai fait exactement comme ton code le demande et la au final je n'arrive même plus à avoir le PDF... Tout ca parceque je suis à l'ouest est que j'ai fermé le mauvais fichier tout à lheure.

Remplace le code que tu as mis par celui-ci :

Sub PassationPDF()

    'On déclare les variables
    Dim plagePDF As Range
    Dim Destination, Nom As String

    'On passe le calcul en automatique
    Application.Calculation = xlAutomatic

    rep = MsgBox("Ne pas oublier :" & Chr(13) & "1) Enregistrer le PDF de la FNC dans le dossier correspondant" & Chr(13) & "2) Faire suivre la FNC au     Service Achats" & Chr(13) & "3) Les achats feront suivre au fournisseur sous 48h", vbExclamation, "Rappel")

    'On attribue la plage à exporter, le chemin du dossier de destination et le nom du PDF
    plagePDF = Sheets("Edition FNC").Range("a1:j39")
    Destination = "Y:\Achat\12 GESTION FNC" & x
    Nom = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text & ".pdf"

    'On exporte la plage voulu en PDF
    plagePDF.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Destination & Nom, Quality:=xlQualityStandard

End Sub

Salut Baboutz,

Du coup hier je me suis bloqué 30 min et j'ai refais toute la macro, j'avais pas vu ton message, je suis parti à 45, mais ca fonctionne le nom du document s'incrémente bien , seulement l'enregistrement automatique ne fonctionne pas donc on va faire en manuel c'est pas grave !

Dim x As String

Sub Export_PDF()
'
' Macro1 Macro
'
'
 Application.Calculation = xlAutomatic
Sheets("Edition FNC").Select
Sheets("Edition FNC").Range("a1:j39").EntireRow.Hidden = False
x = Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & " Le " & Range("h4").Text

rep = MsgBox("Ne pas oublier :" & Chr(13) & "1) Enregistrer le PDF de la FNC dans le dossier correspondant" & Chr(13) & "2) Faire suivre la FNC au Service Achats" & Chr(13) & "3) Les achats feront suivre au fournisseur sous 48h", vbExclamation, "Rappel")

    Application.Goto Reference:="Print_Area"
    Sheets("Edition FNC").Range("a1:j39").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "Y:\Achat\12 GESTION FNC" & Range("C4").Text & " PO " & Range("C7") & " Ref " & Range("C9").Text & ".pdf", Quality:=xlQualityStandard, _
         IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

End Sub

La je regarde juste pourquoi la macro ne se lance pas toute seule, a chaque fois que je clique sur le bouton pour générer le PDF, cela m'indique :

impossible d'exécuter la macro ... il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient desactivées.

Du coup pour la lancer je dois rentrer dans la macro a chaque fois.

Rechercher des sujets similaires à "erreur execution 1004 definie application objet"