Le monde change constamment, presque rien n’est permanent. Il peut donc arriver que vous souhaitiez modifier les noms que vous utilisez. Bien sûr, vous ne voulez pas toucher et renommer tous les noms individuellement, mais utilisez une macro qui effectue cette tâche confortablement et sans trop d’effort.
Dans l’exemple suivant, supposons qu’une entreprise souhaite travailler à l’international à l’avenir. Par conséquent, tous les noms de cellules francais utilisés doivent être convertis en noms de cellules anglais. Entre autres choses, une liste de clients doit être implémentée dans laquelle le nom de cellule se compose du nom du client réel avec le préfixe CLIENT. Ce préfixe doit maintenant être renommé CUSTOMER. Tous les noms utilisés dans le classeur doivent être vérifiés pour cela.
Sub ModifierPlageCell() Dim zoneNom As Object Dim VglNom As String For Each zoneNom In ThisWorkbook.Names VglNom = zoneNom.Name If InStr(VglNom, "Client") > 0 Then VglNom = Application.Substitute(VglNom, _ "Client", "Customer") zoneNom.Name = VglNom End If Next zoneNom End Sub
À l’aide de la liste des noms, vous pouvez déterminer tous les noms du classeur. Étant donné que vous devez utiliser la fonction InStr pour effectuer la vérification du nom, affectez la variable d’objet nommée zones à la variable de chaîne VglName. Utilisez maintenant la fonction InStr pour déterminer si la partie de texte CUSTOMER apparaît dans le nom respectif. Si tel est le cas, la fonction signale la première occurrence de la partie texte, une valeur supérieure à zéro. Dans ce cas, la fonction de table de substitution est utilisée. Passez d’abord la partie de texte à remplacer (CLIENT) à cette fonction puis la nouvelle chaîne de caractères (CLIENT). Enfin, affectez la variable de chaîne révisée VglNom à la variable d’objet NamedRanges, ce qui rend le changement de nom parfait.
Sub ModifierPlageCell Dim zoneNom As Object Dim VglNom As String For Each zoneNom In ThisWorkbook.Names VglNom = zoneNom.Name If InStr(VglNom, "Customer") > 0 Then VglNom = Application.Substitute(VglNom, _ "Customer", "Client") zoneNom.Name = VglNom End If Next zoneNom End Sub
Bonjour,
Votre code m’a intéressé car je souhaite modifier des séries de noms dans un projet excel de gestion de planning. J’ai essayé de reprendre votre code mais cela ne semble pas fonctionner. Le débogage curieusement me dit qu’un end if intervient sans bloc If alors qu’il existe bien.
De mon côté, j’ai des séries de nom du genre : H_Dim1, H_Dim2, H_Dim3, etc. Ce nommage de départ ne me semble plus logique car le numéro porte sur l’horaire et non pas le jour. Je voudrais donc modifier tous les H_DimX en HX_Dim. Pouvons-nous échanger sur ces questions.
D’avance Merci
Kostrovit
Bonjour,
J’ai finalement réussi à adapter votre code pour ma situation avec des séries très différentes de nom. En utilisant la concaténation, ça marche bien. La sélection par InStr() est vraiment une bonne solution pour isoler les noms similaires.
Code à adapter à vos situations. Attention ! Pour la fonction Right(), quand les numéros sont inférieurs à 10, il faut mettre (1) à la place de (2) dans le second argument.
En vous remerciant
Bien à vous.
Kostrovit