remplacement caractère dans macro listes nommées

dokaz

XLDnaute Nouveau
Bonjour,

N'étant pas doué en code VBA, je bloque sur un code qui doit me remplacer dans ma feuille excel plusieurs caractères afin de pouvoir nommer des plages de cellules

Code:
ActiveWorkbook.Names.Add Name:=Replace(c, " ", "_"), RefersTo:=f.Cells(ligne + 1, colListe)
ça fonctionne ici pour remplacer mes espaces en "_" mais je dois remplacer également des chiffres, des "/", des "+" etc...
J'ai testé en mettant & Replace(c, "-", "_"), pour mes tirets mais ça ne marche pas.
Comment puis-je cumuler les remplacements?

J'ai le même soucis ensuite dans excel avec =INDIRECT(SUBSTITUE(A2;" ";"_")) ou je vais également devoir remplacer les mêmes caractères que dans le code.

Merci pour votre aide,

Cordialement,
 

tototiti2008

XLDnaute Barbatruc
Re : remplacement caractère dans macro listes nommées

Bonjour dokaz,

le plus clair est encore de passer par une variable

Code:
Dim Nom as string
Nom = Replace(c, " ", "_")
Nom = replace(Nom, "/", "_")
Nom = replace(Nom, "+", "_")
...
ActiveWorkbook.Names.Add Name:=Nom, RefersTo:=f.Cells(ligne + 1, colListe)
 

WUTED

XLDnaute Occasionnel
Re : remplacement caractère dans macro listes nommées

Bonjour dokaz, tototiti2008,

Tu peux le faire aussi comme ça :
Code:
Nom = Replace(Replace(Replace(c,"+","_"),"/","_")," ", "_")
Non c'est pas moche du tout comme façon de faire :cool:
 

dokaz

XLDnaute Nouveau
Re : remplacement caractère dans macro listes nommées

Merci pour ces réponses mais effectivement beauté et code sont compatibles donc j'ai retenu la première façon avec la dimension ;) Il faut que j'ai le réflexe de la dimension, c'est le top !

C'est même mieux que je pensais car à présent même les "_" qui remplaçait les espaces dans le code initial ont disparus à l'écran (mais reste dans les noms des plages)

En revanche, dans mes listes de choix excel, ma source est erronée si je mets INDIRECT (cell) et comme indiqué dans mon premier post ça vient du Substitue() où je dois remplacer les mêmes caractères que dans le code... mais comment? cette fois sous la forme ET(substitue();substitue();substitue();...) ?

J'ai testé ainsi dans la formule validation/liste : =INDIRECT(ET(SUBSTITUE(D38;" ";"_");SUBSTITUE(D38;"-";"_");SUBSTITUE(D38;")";"_");SUBSTITUE(D38;"(";"_");SUBSTITUE(D38;"+";"_"))) mais sans succès, réponse liste érronée (D38 étant ma cellule de choix niveau 1 qui fonctionne

Cordialement,
 
Dernière édition:

Discussions similaires

Réponses
34
Affichages
4 K

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine