Bonjour,
Ton problème est un peu plus complexe qu'il n'y paraît à cause du nom des onglets qui ne supporte pas certains caractères ou des doublons (je n'ai géré que les doublons). Et surtout, tu donnes tellement peu d'indications. C'est impressionnant comme les demandeurs sont flemmards !...
Le code est à placer dans le classeur contenant la plage nommée. Il faut que les deux classeurs soient ouverts pour qu'il fonctionne correctement.
Code commenté à adapter :
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CR As Workbook 'déclare la variable CR (Classeur à Renommer)
Dim PN As Range 'déclare la variable PN (Plage Nommée)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim NC As Byte 'déclare la variable NC (Nombre de Cellules)
Dim NO As Byte 'déclare la variable NO (Nombre d'Onglets)
Dim MES As String 'déclare la variable MES (MESsage)
Set CS = ThisWorkbook 'définit le classeur source CS
Set CR = Workbooks("Le Classeur à Renomer.xls") 'définit le classeur à renommer CR (tu adapteras le nom évidement)
CS.Activate 'active le classeur source
Set PN = Range("Ta_Plage_Nommée") 'définit la palge nommée PN (tu adapteras évidement)
NC = PN.Cells.Count 'définit le nombre de cellules (donc de noms) de la plage nommée (tu adapteras le nom évidement)
NO = CR.Sheets.Count 'définit le nombre d'onglets du classeur à renommer CR
If NC > NO Then MES = "Il y a plus de noms que d'onglets à renommer !" 'si le nombre de cellules est supérieur au nombre d'onglets, définit le message MES
If NO > NC Then MES = "Il y a plus d'onglets que de noms, les derniers ne seront pas renommés !" 'si le nombre d'onglets est supérieur au nombre de cellules, définit le message MES
If NC <> NO Then MsgBox MES 'si les deux nombre sont différent, affiche le message MES
For I = 1 To PN.Cells.Count 'boucle sur toutes les cellules de la palge nommé
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe a la ligne suivante)
'renomme l'onglet I du classeur CR avec le nom de la cellule I (si non vide) de la plage nommée PN (génère une erreur si le nom existe déjà)
If PN(I).Value <> "" Then CR.Sheets(I).Name = PN(I).Value
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
'si les deux variables NC et NO sont églales affiche un message
MsgBox "Un onglet portant ce nom existe déjà ! Impossible de renommer l'onglet " & I & " !"
End If 'fin de la condition
Next I 'prochaine cellule de la plage nommée PN
End Sub