Modifier les noms de plages de cellules avec Excel VBA

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

 

S’abonner
Notifier de
2 Commentaires
le plus ancien
le plus récent le plus populaire
Inline Feedbacks
Voir tous les commentaires

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.

Sub ModifierNomPlageP2Apm()
Dim zoneNom As Object
Dim VglNom As String
Dim numero As String

For Each zoneNom In ThisWorkbook.Names
   VglNom = zoneNom.Name
   numero = Right(VglNom, 2)

   If InStr(VglNom, "P_Mer_Apm") > 0 Then
       VglNom = WorksheetFunction.Substitute(VglNom, "P_Mer_Apm" & numero, "P" & numero & "_Mer_Apm")
       zoneNom.Name = VglNom
   End If
Next zoneNom

End Sub

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

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

2
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x