De mon côté, ça fonctionne bien. Alors j'ai peut-être mal compris...
Ce que j'ai compris, c'est qu'on a une feuille modèle qui contient des noms avec étendue sur le classeur.
Lorsqu'on copie cette feuille, la copie hérite des mêmes noms, mais avec étendue sur la feuille uniquement (je précise que pour le code, l'étendue n'a pas d'importance).
Alors pour supprimer les noms de la copie, on utilise la boucle et on compare la valeur de la propriété .refersto de chaque nom du classeur avec le nom de la feuille active (créée à l'instant).
La propriété .refersto renvoie "=BLA!A1" ou "'BLA BLA'!A1" pour un nom défini sur A1 des feuilles BLA et BLA BLA (il y a des côtes quand le nom de feuille contient un espace).
La feuille Modele quant à elle conserve bien ses noms.
Après, je ne sais pas ce que fait la macro MEFLigneModele ?! Peut-être qu'en la désactivant ou en l'exécutant avant, ce serait mieux.
Sinon, j'ai rajouté une condition pour éviter de supprimer la zone d'impression :
Sub Ajouter_nouvelle_recette()
Dim nm as Name
With ThisWorkbook
.Sheets("Modèle").Copy After:=.Sheets(.Sheets.Count) 'Copie de la feuille Modèle en dernier
For Each nm In .Names
If replace(nm.RefersTo, "'", "") Like "=" & ActiveSheet.Name & "!*" Then
If Not nm.Name Like "*Print_Area*" Then nm.Delete
End If
Next nm
End With
Call MEFLigneModele
End Sub
C'est testé et retesté avec des feuilles comprenant des noms sans ou avec espace. As-tu essayé de tester le code au pas à pas ?
Cdlt,