OVH Cloud OVH Cloud

Propriété NameLocal

34 réponses
Avatar
Alain
J'essaye de créer un nom localisé avec la propriété NameLocal mais ça ne
fonctionne pas.

Si je fais pas exemple:
Names.Add Name:="Period", NameLocal:="Période", RefersTo:="=Test!$C:$C"

Mais NameLocal a alors la même valeur que Name, qui est "Period".

Merci!

10 réponses

1 2 3 4
Avatar
michdenis
> pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer un
nom
avec une "appellation secondaire" interchangeable au gré de l'usager et ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.
Avatar
Daniel.C
Bonjour Denis.
Pour ma culture perso, tu pourrais me dire quelle est l'utilité de
NameLocal ?
Daniel

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre "NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer un
nom
avec une "appellation secondaire" interchangeable au gré de l'usager et ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.


Avatar
Alain
Pour ton information Denis j'ai la preuve du contraire mais avec un nom
prédéfini et j'essaye de le reproduire avec des noms que je définirais moi
même...

Essaye ceci dans la Fenêtre Exécution:
Names.Add Name:="Base_de_Donnees", RefersTo:¬tiveSheet.UsedRange

Et ensuite:
? Names("Base_de_Donnees").Name
Retournera:
Database

? Names("Database").NameLocal
Retournera:
Base_de_Donnees


Ceci ne veut évidemment pas dire que je puisse le faire moi-même en VBA mais
ça prouve le rôle de NameLocal...

"michdenis" wrote in message
news:

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer un
nom
avec une "appellation secondaire" interchangeable au gré de l'usager et
ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne
de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.




Avatar
michdenis
Bonjour Daniel,

La seule réelle différence entre la propriété "Name" et
"NameLocal" dans la méthode "Add" de l'objet "Name"
et l'étendue du nom créé.

La propriété Name crée un nom au niveau du classeur :
comme dans cette syntaxe
Names.Add "Denis", RefersTo:=Range("A1")

La propriété NameLocal crée un nom au niveau de la feuille de calcul
active lorsque la commande est exécutée :
comme dans cette syntaxe :
Names.Add RefersTo:=Range("A1"), NameLocal:="Toto"

On pourrait aussi ajouter un nom défini au niveau du classeur dans
la catégorie des noms au niveau d'une feuille donnée :
******
'Création d'un nom au niveau du classeur
Names.Add RefersTo:=Range("A1")

'On pourrait utiliser aussi cette séquence pour ajouter un nom
'désignant une plage locale d'une feuille précise (feuille active)
'au moment de l'exécution de la commande
'Même plage de cellules avec une étendue locale à la feuille active
Names("Denis").NameLocal = "toto"
******

Par la suite, si on désire que les formules tiennent compte de la
modification apportée, on devrait pouvoir utiliser la commande
"Rechercher / Remplace" pour effectuer le remplacement dans
les formules de la feuille de calcul.





"Daniel.C" a écrit dans le message de news:
%
Bonjour Denis.
Pour ma culture perso, tu pourrais me dire quelle est l'utilité de
NameLocal ?
Daniel

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon
la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer
un nom
avec une "appellation secondaire" interchangeable au gré de l'usager et
ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne
de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.






Avatar
Daniel.C
OK, merci.
Daniel

Bonjour Daniel,

La seule réelle différence entre la propriété "Name" et
"NameLocal" dans la méthode "Add" de l'objet "Name"
et l'étendue du nom créé.

La propriété Name crée un nom au niveau du classeur :
comme dans cette syntaxe
Names.Add "Denis", RefersTo:=Range("A1")

La propriété NameLocal crée un nom au niveau de la feuille de calcul
active lorsque la commande est exécutée :
comme dans cette syntaxe :
Names.Add RefersTo:=Range("A1"), NameLocal:="Toto"

On pourrait aussi ajouter un nom défini au niveau du classeur dans
la catégorie des noms au niveau d'une feuille donnée :
******
'Création d'un nom au niveau du classeur
Names.Add RefersTo:=Range("A1")

'On pourrait utiliser aussi cette séquence pour ajouter un nom
'désignant une plage locale d'une feuille précise (feuille active)
'au moment de l'exécution de la commande
'Même plage de cellules avec une étendue locale à la feuille active
Names("Denis").NameLocal = "toto"
******

Par la suite, si on désire que les formules tiennent compte de la
modification apportée, on devrait pouvoir utiliser la commande
"Rechercher / Remplace" pour effectuer le remplacement dans
les formules de la feuille de calcul.





"Daniel.C" a écrit dans le message de news:
%
Bonjour Denis.
Pour ma culture perso, tu pourrais me dire quelle est l'utilité de
NameLocal ?
Daniel

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer un
nom
avec une "appellation secondaire" interchangeable au gré de l'usager et
ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne
de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.








Avatar
michdenis
> Ceci ne veut évidemment pas dire que je puisse le faire moi-même en VBA
mais ça prouve le rôle de NameLocal...



Voir réponse donnée à Daniel.
Avatar
Alain
La propriété NameLocal n'a absolument rien a voir avec l'étendu (scope) du
nom qui dépend plutôt de l'objet (feuille ou classeur) à partir duquel
l'objet Names est utilisé...

Par exemple:
ActiveWorkbook.Names.Add Name:="NomGlobal", RefersTo:¬tiveSheet.UsedRange
ajoutera un nom global au classeur alors que:
ActiveSheet.Names.Add Name:="NomLocal", RefersTo:¬tiveSheet.UsedRange
ajoutera un nom local à la feuille...
L'étendu par défaut est le classeur alors Names équivaut à
ActiveWorkbook.Names

Le mot Local dans NameLocal est pour Localized ce qui ne doit pas être
confondu avec l'étendu (scope) Local vs Global

Pour preuve essaye ce que je t'ai suggéré dans ma réponse précédente avec le
nom "Base_de_donnees"...


"michdenis" wrote in message
news:eN3$
Bonjour Daniel,

La seule réelle différence entre la propriété "Name" et
"NameLocal" dans la méthode "Add" de l'objet "Name"
et l'étendue du nom créé.

La propriété Name crée un nom au niveau du classeur :
comme dans cette syntaxe
Names.Add "Denis", RefersTo:=Range("A1")

La propriété NameLocal crée un nom au niveau de la feuille de calcul
active lorsque la commande est exécutée :
comme dans cette syntaxe :
Names.Add RefersTo:=Range("A1"), NameLocal:="Toto"

On pourrait aussi ajouter un nom défini au niveau du classeur dans
la catégorie des noms au niveau d'une feuille donnée :
******
'Création d'un nom au niveau du classeur
Names.Add RefersTo:=Range("A1")

'On pourrait utiliser aussi cette séquence pour ajouter un nom
'désignant une plage locale d'une feuille précise (feuille active)
'au moment de l'exécution de la commande
'Même plage de cellules avec une étendue locale à la feuille active
Names("Denis").NameLocal = "toto"
******

Par la suite, si on désire que les formules tiennent compte de la
modification apportée, on devrait pouvoir utiliser la commande
"Rechercher / Remplace" pour effectuer le remplacement dans
les formules de la feuille de calcul.





"Daniel.C" a écrit dans le message de news:
%
Bonjour Denis.
Pour ma culture perso, tu pourrais me dire quelle est l'utilité de
NameLocal ?
Daniel

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les
noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom selon
la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu
peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras créer
un nom
avec une "appellation secondaire" interchangeable au gré de l'usager et
ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même ligne
de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type
de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.










Avatar
Alain
Même chose, voir mes réponses précédentes et essaye les exemple de code
fourni...

"michdenis" wrote in message
news:
Ceci ne veut évidemment pas dire que je puisse le faire moi-même en VBA
mais ça prouve le rôle de NameLocal...



Voir réponse donnée à Daniel.



Avatar
FS
Bonjour,

Une info from Microsoft, qui relie "Local" à une question de langue :

http://msdn.microsoft.com/en-us/library/aa169726%28office.10,lightweight%29.aspx

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Daniel.C a écrit :
Bonjour Denis.
Pour ma culture perso, tu pourrais me dire quelle est l'utilité de
NameLocal ?
Daniel

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom
selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras
créer un nom
avec une "appellation secondaire" interchangeable au gré de l'usager
et ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même
ligne de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.






Avatar
Misange
Bonjour,
Mon demi grain de sel:
Je pense effectivement que namelocal se réfère bien à la localization au
sens définition du langage de l'utilisateur d'excel.
Cependant, je crains qu'on ne puisse faire ce que tu souhaites Alain et
que cela se réfère à des noms prédéfinis dans l'application.
Ceci est un exemple de msdn:

With ActiveWorkbook.Styles(1)
MsgBox "The name of the style: " & .Name
MsgBox "The localized name of the style: " & .NameLocal
End With

En tous cas si tu trouves ce serait très pratique !
Dis nous

Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !


Alain a écrit :
Pour ton information Denis j'ai la preuve du contraire mais avec un nom
prédéfini et j'essaye de le reproduire avec des noms que je définirais
moi même...

Essaye ceci dans la Fenêtre Exécution:
Names.Add Name:="Base_de_Donnees", RefersTo:¬tiveSheet.UsedRange

Et ensuite:
? Names("Base_de_Donnees").Name
Retournera:
Database

? Names("Database").NameLocal
Retournera:
Base_de_Donnees


Ceci ne veut évidemment pas dire que je puisse le faire moi-même en VBA
mais ça prouve le rôle de NameLocal...

"michdenis" wrote in message
news:

pouvoir l'éviter avec NameLocal qui est la justement pour gérer les noms
localisés...



Absolument pas ! et ce jusqu'à preuve du contraire ! Le paramètre
"NameLocal"
n'a pas le rôle d'ajouter une expression de remplacement à un nom
selon la
langue de l'usager ou le bon vouloir de ce dernier !

Lorsque de la création d'un nom, ces 2 paramètres sont exclusifs, tu peux
utiliser l'un ou l'autre mais en aucune circonstances, tu pourras
créer un nom
avec une "appellation secondaire" interchangeable au gré de l'usager
et ce,
parce que tu auras utilisé et défini les 2 paramètres dans la même
ligne de
commande en créant le nom de la plage désignée.

Je sais, il est facile de s'y méprendre lorsqu'on compare avec ce type de
propriétés : Range("A1").Formula -> FormulaLocal
Range("A1").NumberFormat -> NumberFormatLocal

On peut créer un nom de cette manière :
Range("A1").Name = "Denis"
Observe le message d'erreur si tu tentes d'utiliser ceci car
la propriété NameLocal de l'objet Range n'existe pas...(non définie)
Range("A1").NameLocal = "OK"

Autre exemple :
'-------------------------------------
Sub test()
Dim Nom As String
Dim NomLocal As String

Names.Add "Denis", RefersTo:=Range("A1"), NameLocal:="Toto"
Nom = Names("Denis").NameLocal
NomLocal = Names("Denis").Name
End Sub
'-------------------------------------

"Toto" ne fait référence à RIEN.






1 2 3 4