Microsoft 365 Macro enregistrement automatique pdf

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nounours4173

XLDnaute Nouveau
Bonjour,

J'utilise une macro dans un fichier pour enregistrer ma page au format .pdf
Cette macro nomme et enregistre le pdf automatiquement dans un dossier, qu'elle créé s'il n'existe pas.

Je veux réutiliser cette macro pour un autre fichier excel
J'ai adapté la macro pour la sélection de la zone d'impression et fait les modifs pour que ca enregistre dans le bon dossier.

La macro "d'origine" fonctionne correctement, enregistre le fichier pdf avec le bon nom dans le bon dossier et valide le tout par la box de dialogue comme prévu.
Celle que j'ai modifiée réagis a 2 comportement différents
le premier :
lorsque je lance la macro elle me demande bien dans quel dossier je veux enregistrer le fichier et contrairement à celle d'origine le dossier d'enregistrement s'ouvre (comme quand on fait enregistrer sous). Il faut que je clique sur "annuler" pour que la macro s'exécute normalement !

Second cas
idem que le premier cas mais il faut que je mette un nom dans "nom de fichier" et que je clique sur enregistrer pour que la macro s’exécute.
Le problème c'est que ça créé aussi un fichier avec le nom que j'ai remplis à la main, je me retrouve donc avec des fichiers en double.

Ci dessous la macro réagissant au second cas

Sub archive()
'
' archive Macro
'
NomDossier = Application.InputBox("Nom du dossier", "Creation du dossier", "Entrer le mois")
Chemin = "g:\Mon Drive\Ete 2025\Bus\Archives\" & NomDossier & "\"
'
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveSheet.Outline.ShowLevels RowLevels:=2
Range("A1😛52").Select
Selection.PrintOut Copies:=1, Collate:=True


On Error Resume Next
If NomDossier = "" Then
Exit Sub

Else

Dossierexistant = GetAttr(dossier) And vbDirectory

If Dossierexistant = False Then
MkDir (Chemin)
End If


ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Chemin & "Archive Bus " & Range("M1") & ".pdf", _
quality:=xkqualitystandard, _
includedocproperties:=True, _
IgnorePrintAreas:=False, from:=1, to:=1, _
openafterpublish:=False

MsgBox ("Et voilà !")
End If


End Sub


J'espère avoir été clair dans mes explications !
Merci par avance pour vos réponses
 
Solution
@Nounours4173

1)
Le message box ne s'affiche jamais.

C'est normal car la ligne est en commentaire comme TFB l'a indiqué dans le message précédent
J'ai rectifié avec la V2 en activant la ligne donc tu auras un message après la création du pdf.


Si la création du pdf est réussie tu auras ce message suivant le bouton que tu as cliqué :

1749693010679.png
ou bien
1749693046132.png


2)
Après plusieurs essais j'ai de temps en temps un message d’erreur
1749670913771.png


le débogueur m’emmène sur cette ligne :

1749670802256.png

Ce message arrive quand le...
Bonjour,

Tes macros seraient lisibles plus facilement si tu utilisais la balise code avec le paramètre vba.
Cela est d'ailleurs aussi vrai pour tes autres messages sur le forum. 😉

Et un classeur anonymisé et représentatif de ton vrai classeur serait infiniment apprécié.
Bonjour,

Merci d'avoir pris le temps de me répondre malgré mon message peu lisible ;-)

Ci dessous ma macro avec la balise code.
Et ci joint mon fichier anonymisé

Les 3 macro impression me servent à imprimer en pdf avec plus ou moins de colonnes et de lignes en fonction du besoin.
La macro "envois donnée bilan " me permet de copier les données présentes en L22😛30 dans un autre classeur excel.
J'espère que ce sera plus lisible et compréhensible

VB:
Sub Impression_Bus()
'
' Impression_Bus Macro
'
NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le mois")
Chemin = "g:\Mon Drive\Ete 2025\Bus\Feuilles de bus\" & NomDossier & "\"
'
    ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    ActiveSheet.Outline.ShowLevels RowLevels:=1
    Range("A1:H48").Select
    Selection.PrintOut Copies:=1, Collate:=True


On Error Resume Next
If NomDossier = "" Then
Exit Sub

Else


Dossierexistant = GetAttr(dossier) And vbDirectory

If Dossierexistant = False Then
MkDir (Chemin)
End If


ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Chemin & "Bus " & Range("M1") & ".pdf", _
quality:=xkqualitystandard, _
includedocproperties:=True, _
IgnorePrintAreas:=False, from:=1, to:=1, _
openafterpublish:=False

MsgBox ("C'est fait ! Trop facile !")
End If


End Sub
 

Pièces jointes

Bonjour à tous

@Nounours4173


C'est le nom du mois en cours ou c'est le numéro du mois en cours ou cela peut être un mois quelconque ???

En clair :
Peux tu mettre un exemple de ce que tu attends comme résultat comme chemin et comme nom de fichier pour les 3 cas suivants pour tes PDF ?

Regarde la pièce jointe 1219127

Bonne lecture
Bonjour @Phil69970

C'est le nom du mois en cours, je rentre le mois dans la box ou c'est demandé, si le dossier n'existe pas encore ça le créé et ça enregistre le fichier dedans, si le dossier existe déjà ça enregistre le fichier dedans.

Le chemin est le suivant pour les 2 premiers cas
G:\Mon Drive\Ete 2025\Bus\Feuilles de bus\Juillet et le nom du fichier est automatiquement : "Bus ven 11 juil 25.pdf "
Ce qui change entre les 2 est la zone d'impression (il y a plus de lignes imprimées sur le second)

La troisième macro imprime encore plus d'infos et va dans un autre dossier
G:\Mon Drive\Ete 2025\Bus\Archives\Juillet et le nom du fichier est automatiquement : "Archive Bus ven 11 juil 25.pdf"

J'espère que c'est compréhensible
Cdt
 
Oui c'est ca avec un \ entre Juillet et Archive Bus... dans le 3eme cas
Et pas dans le 1er et 2 eme cas ??
Car cela ne me semble pas trop logique et en tout cas ne ressemble pas à ce que tu as écris
La troisième macro imprime encore plus d'infos et va dans un autre dossier
G:\Mon Drive\Ete 2025\Bus\Archives\Juillet et le nom du fichier est automatiquement : "Archive Bus ven 11 juil 25.pdf"
Donc si j'ai compris
1 et 2)
G:\Mon Drive\Ete 2025\Bus\Feuilles de bus\Juillet Bus ven 11 juil 25.pdf

Et le 3 eme cas
G:\Mon Drive\Ete 2025\Bus\Archives\Juillet\Archive Bus ven 11 juil 25.pdf
 
Et j'y pense que maintenant mais le mois sera toujours le mois de la date en M1 ?

Si oui pas la peine de le demander à l'utilisateur car avec 1 ou 2 lignes de codes on peut récupérer le mois facilement

Dans l'exemple Juillet de la cellule M1

1749661488290.png
 
Et j'y pense que maintenant mais le mois sera toujours le mois de la date en M1 ?

Si oui pas la peine de le demandé à l'utilisateur car avec 1 ou 2 lignes de codes on peut récupérer le mois facilement

Dans l'exemple Juillet de la cellule M1

Regarde la pièce jointe 1219164
Oui ce sera toujours le mois de la case M1
Par contre je n'ai pas été attentif sur les derniers échanges il y a bien un \ aussi dans les cas 1 et 2... après Juillet
Le mois est bien un dossier dans tous les cas
 
Ecris en clair les 2 chemins possible que je ne fasse pas d'erreur

Et je pars sur l’extraction du mois de la cellule M1 SANS rien demander à l'utilisateur, es tu ok comme cela ?
1 et 2)
G:\Mon Drive\Ete 2025\Bus\Feuilles de bus\Juillet\Bus ven 11 juil 25.pdf

Et le 3 eme cas
G:\Mon Drive\Ete 2025\Bus\Archives\Juillet\Archive Bus ven 11 juil 25.pdf

OK si c'est automatique ;-)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
235
Réponses
10
Affichages
530
Réponses
3
Affichages
566
Retour