Macro indisponible

Bonjour

Je souhaite faire un enregistrement de ma feuille (bordereau de remise" excel et l'archiver dans un format PDF dans un dossier. Pour cela j'ai crée un bouton et collé le code suivant

Public Sub enregistrement_pdf()

Dim Chemin As String, nomFichier As String

Chemin = "XXXXXXXXXXXXXXXXXXXX""

nomFichier = ActiveSheet.Range("C6").Value & ".pdf"

ActiveSheet.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:=Chemin & nomFichier, _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

J'ai un message d'erreur :

"Impossible d’exécuter la macro. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées".

J'ai regardé et la macro semble enregistré dans le classeur. Y a t'il quelque chose à activer ou une erreur ?

Merci d'avance

Bonjour

Je me réponds seul car depuis quelques minutes je pense avoir franchit une étape et ça fonctionne. J''ai enregistré une nouvelle fois la macro dans le classeur

J'ai juste un problème d'adresse à corriger puisque le fichier n’atterrit pas dans le dossier mais je souhaitais vous en informer ça peut sans doute servir.

Merci encore

Bonjour Thomer,

Ça y'est ! tu n'es plus tout seul !

⚠ Si tu as écrit ta macro dans un fichier Excel .xlsx elle ne sera pas conservée lors de l'enregistrement du classeur ! il faut enregistrer ton fichier avec le type "Classeur Excel (prenant en charge les macros)" ➯ .xlsm ; appuyer sur la touche F12 pour avoir la fenêtre « Enregistrer sous » : c'est juste sous le nom de fichier que tu peux choisir dans une liste le type de fichier.

Pour exécuter une macro, il faut bien sûr que les macros soient activées.

Pour l'adresse, il faut que Chemin soit renseigné correctement ; 2 exemples :

Chemin = "C:\Users\Thomer\Documents\Dossier X\"

Chemin = ThisWorkbook.Path & "\"

nomFichier = [C6] & ".pdf"

Ainsi, Filename:=Chemin & nomFichier devrait être correct.

Cordialement,

dhany

Merci beaucoup je vais etudier ta reponse et tenter de la mettre en oeuvre.

Bonne journée

Re et merci ça fonctionne nickel. Je souhaiterai desormais que le nom du fichier PDF comporte le nom de la personne et la date du jour.

Je l'ai formalisé ainsi :

Public Sub enregistrement_pdf()

Dim Chemin As String, nomFichier As String

Chemin = "N:\XXXXXXXXXXXXXXXXXXXX\"

nomFichier = [C6] & [B3] & ".pdf"

ActiveSheet.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:=Chemin & nomFichier, _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Sur ma feuille excel La cellule [B3] est une formule "AUJOURDHUI" est-ce cela qui entraine le message erreur (croix rouge + 400) .

Merci

Oui c'est bien la formule dans B3 qui semble poser problème, sans doute l’écriture du code pour prendre en compte le contenu d'une cellule ou est affecté une formule est t'il spécifique ?

Cordialement

Oui, il y a erreur à cause de [B3] car un nom de fichier ne peut pas contenir le caractère « / » ; ce caractère est réservé pour les commutateurs d'une ligne de commande DOS ; exemple : C:\>dir /p

Or la formule =AUJOURDHUI() retourne actuellement 15/12/2017 ; demain et les jours suivants, le retour sera différent... (mais toujours avec des « / »)

Ce n'est donc pas la formule en elle-même qui pose problème, mais le fait que le retour contient des « / » ; note bien que le problème serait le même sans formule et avec 15/12/2017 saisi directement en B3.

Solution : nomFichier = [C6] & Replace$([B3], "/", "-") & ".pdf"

(tout en laissant ta formule initiale en B3)

Cordialement

Une merveille, merci encore

Bonjour une petite subtilité sans doute, lorsque j'enregistre excellence en pdf avec comme nom "nom de personne + date" je ne peux en enregistrer deux identiques. Le second effaçant le premier.

Y a t'il une modification du code à apporter

Public Sub enregistrement_pdf()

Dim Chemin As String, nomFichier As String

Chemin = "XXXXXXXXXXXXXXXXXXX\"

nomFichier = [c6] & Replace$([B3], "/", "-") & ".pdf"

ActiveSheet.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:=Chemin & nomFichier, _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Bonjour Thomer,

Tu a écrit :

Le second effaçant le premier.

C'est normal puisque le nom du fichier est "Nom de la personne" et "Date (JJ-MM-AAAA)" ; il faut donc que tu sauvegardes aussi l'heure ; mais attention : cette fois, c'est le caractère deux-points qui sera refusé, car dans une ligne de commande DOS, ce caractère est réservé pour l'unité ; 3 exemples : C: pour le disque dur ; D: pour le DVD-ROM ; E: pour une clé USB ou un disque dur externe.

Alors oui, tu as bien deviné : là aussi, il faut obligatoirement faire un autre remplacement de caractère ; j'ai choisi un point à la place du deux-points ; la bonne nouvelle, c'est que ça ne pose aucun problème par rapport au point de l'extension : c'est ok de ce côté-là ! la mauvaise nouvelle, ... ah ben non, t'as d'la chance : y'a pas d'mauvaise nouvelle.

nomFichier = [C6] & " " & Replace$([B3], "/", "-") & " " & Replace$(Time$, ":", ".") & ".pdf"

Ah ben si, finalement, y'a quand même bien une mauvaise nouvelle (désolé) ! vu que l'heure est avec les secondes, ça fait que ton second fichier effacera le premier si tu sauvegardes ton fichier une 2ème fois dans la même seconde ; dans ce cas, tu es obligé de patienter une seconde de plus ... mais si c'est trop long pour toi, alors il te faut rajouter les centièmes de secondes...

Cordialement,

dhany

Ok et merci pour la réponse et l'humour qui égaye la lecture. Pour revenir à cet enregistrement, n'y aurait t'il pas moyen que chaque enregistrement incrémente un "N° ou code différent" à chaque fois et que ce dernier soit repris dans le titre pour que chaque PDF soit "différents" et n’écrase pas son prédécesseur ?

C'est difficile d'être clair quand on ne maitrise pas bien.

Bonne journée

ça fonctionne nickel, bonne fin de journée à vous tous.

Rechercher des sujets similaires à "macro indisponible"