Voilà une version révisée (et surtout épurée) d'après ce que j'ai compris :
Sub tuto()
On Error Resume Next
Dim DerLig As Long, Lig As Long, Grph As ChartObject, Chemin As String
Chemin = "C:\Users\nomutilisateur\Downloads\Nouveau dossier\"
With Sheets(1)
'Suppression anciens gaphs
For Each Grph In .ChartObjects
Grph.Delete
Next Grph
DerLig = .Cells(Rows.Count, 1).End(xlUp).Row 'trouver derniere ligne du tableau à partir de la colonne 1
For Lig = 2 To DerLig 'boucle sur les lignes - de la premiere et la derniere
'création du graphique
.Shapes.AddChart2(251, xlDoughnut).Select
ActiveChart.SetSourceData Source:=Range("A" & Lig & ":C" & Lig)
ActiveChart.Legend.Select
'Positionnement
ActiveChart.Top = .Cells(Lig, 4).Top
ActiveChart.Left = .Cells(Lig, 4).Left
ActiveChart.Width = .Cells(Lig, 4).Width
ActiveChart.Height = .Cells(Lig, 4).Height
'Export PDF
.Cells(Lig, 4).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & .Cells(Lig, 1) & ".pdf"
Next Lig
End With
End Sub
Tu t'es bien compliqué à utiliser plusieurs syntaxes, avec beaucoup de redondances...
Le soucis de ton premier graphique venait du fait que tu créais un graphique dès la première ligne, alors qu'il s'agit d'une ligne d'en-tête. En commençant à partir de la ligne 2, tu ne devrais pas avoir de soucis.
Aussi, le nom de ton fichier à exporter risque de poser problème en cas de doublons ou si le nom existe déjà...