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
Le pb est que je n'arrive pas au résultat escompté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci pour votre aide.
Marcel
Partager