Problème de référence de noms #REF
Bonjour le forum,
J'ai récemment ouvert une discussion.
"Remplacement de noms de cellules"
L'aide m'a été apportée par casavba et je l'en remercie.
Il s'agissait de remplacer chaque nom ayant une chaîne de caractères par un nouveau nom en remplaçant cette chaîne de caractères. Exemple en remplaçant TOTO par TATA, le nom PANPANTOTO devenait PANPANTATA
Aujourd'hui,
Suite à suppression de feuilles dans mon classeur Excel, j'ai un certain nombre de noms qui se réfèrent à des feuilles affichées "#REF!", ce qui est logique.
Je souhaite ne sélectionner que les noms avec référence "#REF!"
Parmi ceux-ci, pour les noms qui contiennent la chaîne "PAPA", je souhaite qu'ils se réfèrent à la feuille "FEUIL1", pour les autres à la feuille "FEUIL2"
J'ai donc essayé d'adapter le code proposé par casavba et qui fonctionnait très bien.
Nouveau code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Sub Renom()
Dim FEUIL As Worksheet
For Each FEUIL In ThisWorkbook.Worksheets
RenomPlage (FEUIL.Name)
Next
End Sub
Sub RenomPlage(ByVal nFeuil As String)
Dim pRange As Range
Dim nNom As Name
On Error Resume Next
'Boucle sur les noms du classeur
For Each nNom In ThisWorkbook.Names
Set pRange = nNom.RefersToRange
If Not pRange Is Nothing Then
'Vérifie si le nom appartient à la feuille --
If Worksheets(nFeuil).Name = pRange.Worksheet.Name And nNom.RefersTo Like "*#REF*" > 0 Then
If nNom.Name Like "*PAPA*" Then
nNom.RefersTo = Replace(nNom.RefersTo, "#REF", "FEUIL1")
Else
nNom.RefersTo = Replace(nNom.RefersTo, "#REF", "FEUIL2")
End If
End If
End If
Set pRange = Nothing
Next nNom
End Sub |
Le pb est que je n'arrive pas au résultat escompté
Merci pour votre aide.
Marcel