Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nommer un champ par VBA 3è

1 réponse
Avatar
Jdel
Bonsoir,
Message à l'attention de LSteph
Ca marche, en fait c'était les "" qui étaient en trop.
Cela m'a amené à une découverte curieuse. Dans la formule
ColCodJug.FormulaR1C1 = "=VLOOKUP(RC[-35],Liste_Jug_Lots,3,FALSE)"
Je voulais que la valeur_cherchée soit sur la colonne "A", mais je me suis
trompé d'une colonne en comptant, il fallait mettre -34 seulement.
Eh bien, la formule dans la cellule donnait sur la colonne "IV", c'est à
dire la dernière du tableur.
Curieux non ?

"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eqW$m2O7FHA.3752@tk2msftngp13.phx.gbl...
> Par exemple oui et en tant que Range...
> (donc tu l'aura compris sous réserve de ce que renvoient les autres
> variables mises en oeuvre)
> a+
> lSteph
> "Jdel" <jdel5@wanadoo.fr> a écrit dans le message de news:
> 437ef175$0$29213$8fcfb975@news.wanadoo.fr...
>> Il faudrait écrire ça comment alors
>> Texte d'origine :
>> ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", RefersTo:="=ColJugLots"
>>
>> Comme ça ?
>> ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", RefersTo:=ColJugLots
>>
>> "LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
>> exAFupO7FHA.1184@TK2MSFTNGP12.phx.gbl...
>>> ....
>>> C'est aussi parceque tu l'affectes
>>> avec des guillemets et le signe
>>> égal comme s'il s'agissait d'un autre nom du classeur.
>>> ....
>>> Tiens nous au courant.
>>>
>>> A+.
>>> lSteph
>>> "Jdel" <jdel5@wanadoo.fr> a écrit dans le message de news:
>>> 437eebb8$0$19690$8fcfb975@news.wanadoo.fr...
>>>> Ca me donne une idée, c'est peut être parceque j'ai déclaré
>>>> "ColJugLots" "As Object" et non "As Range"
>>>> J'essairai de changer ça lundi
>>>> Sinon, je verrai avec ton exemple si je peux faire quelque chose
>>>>
>>>> Merci et @+
>>>>
>>>> "LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
>>>> %23yiZ0bO7FHA.444@TK2MSFTNGP11.phx.gbl...
>>>>> ...re,
>>>>> A adapter
>>>>> voici un exemple avec la sélection préalablement affectée à la
>>>>> variable:
>>>>>
>>>>> Sub afectplgnom()
>>>>> Dim colJuglots As Range
>>>>> Set colJuglots = Selection
>>>>> ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", _
>>>>> RefersTo:=colJuglots
>>>>> End Sub
>>>>>
>>>>> 'lSteph
>>>>> "Jdel" <jdel5@wanadoo.fr> a écrit dans le message de news:
>>>>> 437ee32c$0$6666$8fcfb975@news.wanadoo.fr...
>>>>>> Bonjour LSteph
>>>>>> Je veux donner le nom "Liste_Jug_Lots" à la plage définie par la
>>>>>> variable "ColJugLots"
>>>>>>
>>>>>> "LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
>>>>>> %23kmUGJO7FHA.956@TK2MSFTNGP10.phx.gbl...
>>>>>>> Bonjour Jdel,
>>>>>>> Sans voir le reste du code ni comment en sont indépendament définies
>>>>>>> les variables (peut-être),
>>>>>>> donc à priori:
>>>>>>>
>>>>>>>>Set ColJuglots= FTamp.Range(FTamp.Cells(2, 37), FTamp.Cells(LimaX,
>>>>>>>>39))
>>>>>>>
>>>>>>> te permet d'affecter à cette variable la plage concernée
>>>>>>>
>>>>>>> Cela n'en fait pas pour autant un nom dans la feuille.
>>>>>>>
>>>>>>> Aussi, me semble-t-il:
>>>>>>>> ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots",
>>>>>>>> RefersTo:="=ColJugLots"
>>>>>>> affecte dans la feuille au nom Liste_Jug_Lots
>>>>>>> référence à un nom ColJugLots qui n'existe pas.
>>>>>>>
>>>>>>> lSteph
>>>>>>>
>>>>>>> "Jdel" <jdel5@wanadoo.fr> a écrit dans le message de news:
>>>>>>> 437eda2b$0$6641$8fcfb975@news.wanadoo.fr...
>>>>>>>> Bonjour,
>>>>>>>> N'ayant pas eu de réponse à ma question d'hier, elle doit être mal
>>>>>>>> posée, je
>>>>>>>> recommence :
>>>>>>>>
>>>>>>>> J'ai cette ligne de code qui est chargée de nommer le champ
>>>>>>>> "ColJugLots" :
>>>>>>>>
>>>>>>>> ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots",
>>>>>>>> RefersTo:="=ColJugLots"
>>>>>>>>
>>>>>>>> J'ai auparavant défini la plage ColJugLots et les variables
>>>>>>>> utilisées :
>>>>>>>>
>>>>>>>> LimaX = FTamp.Cells(1, 1).SpecialCells(xlLastCell).Row
>>>>>>>> Set ColJugLots = FTamp.Range(FTamp.Cells(2, 37), FTamp.Cells(LimaX,
>>>>>>>> 39))
>>>>>>>>
>>>>>>>> La variable (FTamp) est déjà définie plus haut dans le code elle
>>>>>>>> identifie
>>>>>>>> une feuille.
>>>>>>>>
>>>>>>>> Après, j'utilise le nom dans une fomule RECHERCHEV, elle aussi
>>>>>>>> copiée dans
>>>>>>>> une plage par la macro :
>>>>>>>>
>>>>>>>> Set ColCodJug = FTamp.Range(FTamp.Cells(2, 35), FTamp.Cells(LimaX,
>>>>>>>> 35))
>>>>>>>> ColCodJug.FormulaR1C1 = "=VLOOKUP(RC[-35],Liste_Jug_Lots,3,FALSE)"
>>>>>>>>
>>>>>>>> La macro s'exécute normalement, la formule RECHERCHEV se retrouve
>>>>>>>> bien dans
>>>>>>>> les bonnes cellules mais elle a pour résultat NOM? car la plage
>>>>>>>> n'est pas
>>>>>>>> nommée.
>>>>>>>>
>>>>>>>> Pourquoi, puisqu'il n'y a pas d'erreur macro, cette ligne ne
>>>>>>>> fonctionne-t-elle pas
>>>>>>>>
>>>>>>>> Merci pour vos réponses
>>>>>>>>
>>>>>>>> Jean-Pierre

1 réponse

Avatar
LSteph
Bonsoir Jdel,

Curieux non ?
en reculant tu finis par te retrouver à l'autre bout!

;o)
Ca marche, en fait c'était les "" qui étaient en trop.
il me semblait aussi ...alors tout va bien!

Merci pour le retour.

a+

lSteph
"Jdel" a écrit dans le message de news:
43837719$0$18338$
Bonsoir,
Message à l'attention de LSteph
Cela m'a amené à une découverte curieuse. Dans la formule
ColCodJug.FormulaR1C1 = "=VLOOKUP(RC[-35],Liste_Jug_Lots,3,FALSE)"
Je voulais que la valeur_cherchée soit sur la colonne "A", mais je me suis
trompé d'une colonne en comptant, il fallait mettre -34 seulement.
Eh bien, la formule dans la cellule donnait sur la colonne "IV", c'est à
dire la dernière du tableur.

"LSteph" a écrit dans le message de news:
eqW$
Par exemple oui et en tant que Range...
(donc tu l'aura compris sous réserve de ce que renvoient les autres
variables mises en oeuvre)
a+
lSteph
"Jdel" a écrit dans le message de news:
437ef175$0$29213$
Il faudrait écrire ça comment alors
Texte d'origine :
ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", RefersTo:="=ColJugLots"

Comme ça ?
ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", RefersTo:=ColJugLots

"LSteph" a écrit dans le message de news:

....
C'est aussi parceque tu l'affectes
avec des guillemets et le signe
égal comme s'il s'agissait d'un autre nom du classeur.
....
Tiens nous au courant.

A+.
lSteph
"Jdel" a écrit dans le message de news:
437eebb8$0$19690$
Ca me donne une idée, c'est peut être parceque j'ai déclaré
"ColJugLots" "As Object" et non "As Range"
J'essairai de changer ça lundi
Sinon, je verrai avec ton exemple si je peux faire quelque chose

Merci et @+

"LSteph" a écrit dans le message de news:
%
...re,
A adapter
voici un exemple avec la sélection préalablement affectée à la
variable:

Sub afectplgnom()
Dim colJuglots As Range
Set colJuglots = Selection
ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots", _
RefersTo:=colJuglots
End Sub

'lSteph
"Jdel" a écrit dans le message de news:
437ee32c$0$6666$
Bonjour LSteph
Je veux donner le nom "Liste_Jug_Lots" à la plage définie par la
variable "ColJugLots"

"LSteph" a écrit dans le message de news:
%
Bonjour Jdel,
Sans voir le reste du code ni comment en sont indépendament
définies
les variables (peut-être),
donc à priori:

Set ColJuglots= FTamp.Range(FTamp.Cells(2, 37), FTamp.Cells(LimaX,
39))


te permet d'affecter à cette variable la plage concernée

Cela n'en fait pas pour autant un nom dans la feuille.

Aussi, me semble-t-il:
ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots",
RefersTo:="=ColJugLots"
affecte dans la feuille au nom Liste_Jug_Lots

référence à un nom ColJugLots qui n'existe pas.

lSteph

"Jdel" a écrit dans le message de news:
437eda2b$0$6641$
Bonjour,
N'ayant pas eu de réponse à ma question d'hier, elle doit être mal
posée, je
recommence :

J'ai cette ligne de code qui est chargée de nommer le champ
"ColJugLots" :

ActiveWorkbook.Names.Add Name:="Liste_Jug_Lots",
RefersTo:="=ColJugLots"

J'ai auparavant défini la plage ColJugLots et les variables
utilisées :

LimaX = FTamp.Cells(1, 1).SpecialCells(xlLastCell).Row
Set ColJugLots = FTamp.Range(FTamp.Cells(2, 37),
FTamp.Cells(LimaX,
39))

La variable (FTamp) est déjà définie plus haut dans le code elle
identifie
une feuille.

Après, j'utilise le nom dans une fomule RECHERCHEV, elle aussi
copiée dans
une plage par la macro :

Set ColCodJug = FTamp.Range(FTamp.Cells(2, 35), FTamp.Cells(LimaX,
35))
ColCodJug.FormulaR1C1 = "=VLOOKUP(RC[-35],Liste_Jug_Lots,3,FALSE)"

La macro s'exécute normalement, la formule RECHERCHEV se retrouve
bien dans
les bonnes cellules mais elle a pour résultat NOM? car la plage
n'est pas
nommée.

Pourquoi, puisqu'il n'y a pas d'erreur macro, cette ligne ne
fonctionne-t-elle pas

Merci pour vos réponses

Jean-Pierre