Bonjour,
Je n'ai pas trouvé sur le forum alors voici ma requête.
J'ai un fichier qui contient plusieurs feuilles qui ont la même structure. Chaque feuille a des zones nommées.
Voici ma requête :
J'ai une ensemble de classeur qui ont la même structure, mais pas la même taille. cela va de XPI-1 à XPI-35. Les zones nommées ne sont donc pas sur les mêmes plage de cellule d'un classeur à un autre, d'où mon utilisation de zone nommée qui m'apportait ce côté variable.
Je souhaite ( afin de me simplifier la vie dans le gestionnaire de noms) que lorsque je duplique une feuille, modifier les noms des zones nommées automatiquement. Je ne souhaite pas faire venir de référence de cellule dans le code car les plages des zones nommées diffèrent selon les classeurs.
Par exemple, sur ma feuille "LOCDIRLS" j'ai les zones "LSFL1" / "LSFL2" / "LSFL3"/ etc etc
Je remplace le nom de la feuille LOCDIRLS par INTER, jusque là ça va.
En revanche je ne parviens pas à faire une boucle qui va pour chaque zone nommée dans la feuille avec le préfixe LSFL, remplacer LSFL par CHALET par exemple. surtout certains classeurs ot 15 LSFL, certains en ont 2 seulement.
J'ai commencé ce code :
Mais voilà, j'ai deux erreurs: la première c'est erreur de compilation, end if sans bloc if. Et si j'enlève le end if, j'ai erreur d'exécution 424 objet requis. Est-ce que c'est parce que je n'ai pas dis que l'object était une plage de celulle ?
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 Sub Modifierplage() Dim zoneNom As Object Dim VglNom As String Worksheets("INTERCHALET").Activate For Each zoneNom In Thisworksheet.Names VglNom = zoneNom.Name If InStr(VglNom, "LSFL") > 0 Then VglNom = Application.Substitute(VglNom, _ "LSFL", "CHALET") zoneNom.Name = VglNom End if Next zoneNom End Sub
Merci beaucoup.
Si il y a plus simple je prends aussi évidemment.
Partager