Après analyse du comportement de ton fichier avec le traitement export pdf
Tout se passe dans ton onglet « Bulletin » et non dans des onglets spécifiques par élève comme je l’avais compris
Donc effectivement c’est cet onglet mis à jour pour chaque élève qui doit être exporté
Donc l’onglet à cibler pour l’export est bien ce que celui que tu avais mis :
Sheets(« Bulletin »).ExportAsFixedFormat Type:=xlTypePDF,
Seulement il faut dans le nom de l’enregistrement en pdf récupérer les informations nom prénom de chaque élève qui figure dans l’onglet « Bulletin » en cellule C1 et G1
J’ai donc récupéré ces informations dans la variable « nom » que j’inclus dans le nom d’export ici :
Filename:=chemin & nom & « .pdf »
avec pour la variable « nom » cette ligne en amont :
nom = "Bulletin " & Range(« C1 ») & « - » & Range(« G1 »)
Je récupère les valeurs des cellules C1 et G1 précédé de "Bulletin "
Ce qui donne ces enregistrements obtenus après traitement :

Attention si aucun nom et prénom dans les cellules C1 et G1 tous les exports pdf sont effectués sur un seul et même fichier intitulé Bulletin 0-.pdf
J’ai supprimé l’aperçu avant impression :
.PrintPreview
cette étape ne sert à rien pour l’export en pdf et est très contraignant car à chaque traitement il faut le fermer pour obtenir le suivant sachant que dans ton fichier transmis il y en a 30 c’est 30 fermetures pour arriver au terme de la procédure galère galère
J’ai aussi supprimé l’ouverture du pdf qui si lui n’a aucune action sur la macro (aucune interruption) ouvre autant de pdf que d’item dans la liste à traiter soit dans ton fichier 30 pdf qu’il faut aussi refermer
Cela concerne cette partie d’instruction :
OpenAfterPublish:=False (était comme ceci OpenAfterPublish:=True)
Attention au chemin que tu as modifié ainsi :
chemin = ThisWorkbook.Path & « D:\Bulletin\Bulletin 1 »
il manque un caractère en bout « » antishlas indispensable pour un enregistrement des fichiers dans le répertoire cité « Bulletin\Bulletin 1 »
Donc mettre comme ceci :
chemin = ThisWorkbook.Path & « D:\Bulletin\Bulletin 1 »
Le code intégral ainsi modifié :
Sub Image3_Cliquer()
Dim Liste As String, A As Range
With Sheets(« Bulletin »)
Liste = .Range(« I1 »).Validation.Formula1
Liste = Right(Liste, Len(Liste) - 1)
For Each A In Range(Liste)
.[I1] = A.Value
'.PrintPreview
chemin = ThisWorkbook.Path & « D:\Bulletin\Bulletin 1 »
nom = "Bulletin " & Range(« C1 ») & « - » & Range(« G1 »)
Sheets(« Bulletin »).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & nom & « .pdf », _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Next A
End With
End Sub
Cela fonction très bien chez moi
Fais des essais
Ton fichier ci-joint ainsi modifié
CARNET DE COTES 1 démo.xlsm (1,5 Mo)