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

Probleme avec Ucase

13 réponses
Avatar
BV
Bonjour =E0 tous

je dois renvoyer en VBA un certain nombre d'actions selon les cellules
activ=E9es. Voici ce que j'ai fait jusqu'=E0 pr=E9sent et qui fonctionne
parfaitement :

'd=E9claration de la variable et des conditions
Mavar =3D Target.Address
Select Case UCase(Mavar)

' --------- RETOUR ACCUEIL --------- '
Case Is =3D UCase("$B$4")
Call masquer
Range("A1").Select

ce que j'aimerai c'est, plut=F4t que de saisir la r=E9f=E9rence en relatif,
passer en absolu avec une r=E9f=E9rence de cellule : choix1. J'ai donc
essay=E9 na=EFvement ceci et biens=FBr cela ne marche pas :

'd=E9claration de la variable et des conditions
Mavar =3D Target.name
Select Case UCase(Mavar)

' --------- RETOUR ACCUEIL --------- '
Case Is =3D UCase("choix1")
Call masquer
Range("A1").Select

pourriez-vous me donner une piste svp ?

Merci d'avance

BV

3 réponses

1 2
Avatar
BV
On 9 juin, 17:31, BV wrote:
On 9 juin, 17:22, wrote:



> même réponse et pas besoin de Ucase

> Case is = [toto].Address

> pour la suite si les adresses ne sont pas liées à un décalage de la
> première cellule idem avec titi ..tutu

> Sinon je ne te suis pas du tout dans la nécessité  de cette mét hode
> outre mon ignorance du but de la manoeuvre...
> Si on connaissait le contexte et l'objectif j'ai la vive intuition
> qu'il y aurait bien plus simple ..
> ;-) mais on peut se tromper!

> Cordialement.

> --
> lSteph

> On 9 juin, 17:01, BV wrote:

> > On 9 juin, 16:50, wrote:

> > >  Si j'ai bien compris:

> > > Case is = [toto].Address

> > > '...
> > >  Case is =[toto].offset(2,0).Address
> > > Call NotaBene

> > > '...
> > > Case is =[toto].offset(3,0).Address
> > > Call
> > > ...etc

> > > 'lSteph

> > En fait je veux remplacer simplement dans la ligne : Case Is = UCas e
> > ("$B$4")
> > la référence et mettre par exemple : Case Is = UCase("toto")
> > en fait j'aimerai faire

> > Mavar = Target.Address
> > Select Case UCase(Mavar)

> > ' --------- RETOUR ACCUEIL    --------- '
> > Case Is = UCase("toto")
> > Call masquer

> > Case Is = UCase("tata")
> > Call afficher

> > Case Is = UCase("titi")
> > Call souligner

> > end select
> > end case

Bonsoir  à tous et encore 1000 fois merci, la solution de gmlst
fonctionne

en fait ce que j'essaie de faire c'est d'écrire un bout de code sur
une feuille
qui me permette de définir des actions : (call mon action) en fonction
des cellules qui seront activées

exemple :
je clique en B4 (cellule que j'ai nommé toto) je lance une action
je clique en B15 (cellule que j'ai nommée tata) je lance une autre
action

le code que je vous ai envoyé au début fonctionne parfaitement mais
avec des références de cellule relatives
pour pouvoir déplacer mes cellules comme bon me semble je souhaite
passer ces références en absolu

et c'est là que cela se compliquait

merci encore pour votre aide



merci encore à tous pour votre aide
cela marche très bien
Avatar
isabelle
bonjour Bv,

Target.Name retourne la valeur de la référence d'un nom et non à son nom
il faut pour cela passer par la collection Names

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each nm In ThisWorkbook.Names
MsgBox "nm.RefersTo = " & nm.RefersTo
MsgBox "Target.Name = " & Target.Name
If nm.RefersTo = Target.Name Then MsgBox UCase(nm.Name)
Next
End Sub

isabelle

BV a écrit :
On 9 juin, 17:22, wrote:

même réponse et pas besoin de Ucase

Case is = [toto].Address

pour la suite si les adresses ne sont pas liées à un décalage de la
première cellule idem avec titi ..tutu

Sinon je ne te suis pas du tout dans la nécessité de cette méthode
outre mon ignorance du but de la manoeuvre...
Si on connaissait le contexte et l'objectif j'ai la vive intuition
qu'il y aurait bien plus simple ..
;-) mais on peut se tromper!

Cordialement.

--
lSteph

On 9 juin, 17:01, BV wrote:


On 9 juin, 16:50, wrote:

Si j'ai bien compris:

Case is = [toto].Address

'...
Case is =[toto].offset(2,0).Address
Call NotaBene

'...
Case is =[toto].offset(3,0).Address
Call
...etc

'lSteph



En fait je veux remplacer simplement dans la ligne : Case Is = UCase
("$B$4")
la référence et mettre par exemple : Case Is = UCase("toto")
en fait j'aimerai faire

Mavar = Target.Address
Select Case UCase(Mavar)

' --------- RETOUR ACCUEIL --------- '
Case Is = UCase("toto")
Call masquer

Case Is = UCase("tata")
Call afficher

Case Is = UCase("titi")
Call souligner

end select
end case






Bonsoir à tous et encore 1000 fois merci, la solution de gmlst
fonctionne

en fait ce que j'essaie de faire c'est d'écrire un bout de code sur
une feuille
qui me permette de définir des actions : (call mon action) en fonction
des cellules qui seront activées

exemple :
je clique en B4 (cellule que j'ai nommé toto) je lance une action
je clique en B15 (cellule que j'ai nommée tata) je lance une autre
action

le code que je vous ai envoyé au début fonctionne parfaitement mais
avec des références de cellule relatives
pour pouvoir déplacer mes cellules comme bon me semble je souhaite
passer ces références en absolu

et c'est là que cela se compliquait

merci encore pour votre aide



Avatar
BV
On 9 juin, 18:06, isabelle wrote:
bonjour Bv,

Target.Name retourne la valeur de la référence d'un nom et non à so n nom
il faut pour cela passer par la collection Names

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each nm In ThisWorkbook.Names
MsgBox "nm.RefersTo = " & nm.RefersTo
MsgBox "Target.Name = " & Target.Name
If nm.RefersTo = Target.Name Then MsgBox UCase(nm.Name)
Next
End Sub

isabelle

BV a écrit :

> On 9 juin, 17:22, wrote:

>> même réponse et pas besoin de Ucase

>> Case is = [toto].Address

>> pour la suite si les adresses ne sont pas liées à un décalage de la
>> première cellule idem avec titi ..tutu

>> Sinon je ne te suis pas du tout dans la nécessité  de cette mé thode
>> outre mon ignorance du but de la manoeuvre...
>> Si on connaissait le contexte et l'objectif j'ai la vive intuition
>> qu'il y aurait bien plus simple ..
>> ;-) mais on peut se tromper!

>> Cordialement.

>> --
>> lSteph

>> On 9 juin, 17:01, BV wrote:

>>> On 9 juin, 16:50, wrote:

>>>>  Si j'ai bien compris:

>>>> Case is = [toto].Address

>>>> '...
>>>>  Case is =[toto].offset(2,0).Address
>>>> Call NotaBene

>>>> '...
>>>> Case is =[toto].offset(3,0).Address
>>>> Call
>>>> ...etc

>>>> 'lSteph

>>> En fait je veux remplacer simplement dans la ligne : Case Is = UCas e
>>> ("$B$4")
>>> la référence et mettre par exemple : Case Is = UCase("toto")
>>> en fait j'aimerai faire

>>> Mavar = Target.Address
>>> Select Case UCase(Mavar)

>>> ' --------- RETOUR ACCUEIL    --------- '
>>> Case Is = UCase("toto")
>>> Call masquer

>>> Case Is = UCase("tata")
>>> Call afficher

>>> Case Is = UCase("titi")
>>> Call souligner

>>> end select
>>> end case

> Bonsoir  à tous et encore 1000 fois merci, la solution de gmlst
> fonctionne

> en fait ce que j'essaie de faire c'est d'écrire un bout de code sur
> une feuille
> qui me permette de définir des actions : (call mon action) en fonctio n
> des cellules qui seront activées

> exemple :
> je clique en B4 (cellule que j'ai nommé toto) je lance une action
> je clique en B15 (cellule que j'ai nommée tata) je lance une autre
> action

> le code que je vous ai envoyé au début fonctionne parfaitement mais
> avec des références de cellule relatives
> pour pouvoir déplacer mes cellules comme bon me semble je souhaite
> passer ces références en absolu

> et c'est là que cela se compliquait

> merci encore pour votre aide



si avec toutes ces explications je ne le fais pas les yeux fermés :)
merci encore pour tout
1 2