Nommer en VBA une cellule en fonction de son contenu

2 réponses
Avatar
Fredo(67)
Bonjour,

J'ai un tableau de plusieurs centaine de lignes.
Je pr=E9sente ce tableau selon certain type de tri (tri sur le nom, tri sur=
le matricule, tri sur le chantier)

Je voudrais pouvoir nommer la cellule contenant le nom "ZAZA" (en lui donna=
nt le nom "N_ZaZa"

Bien =E9videmment je ne connais pas l'adresse de cette cellule, car elle ch=
ange en fonction du type de tri.

Voil=E0 la syntaxe auquel j'ai pens=E9 :

Suppression nom N_ZaZa
Recherche cellule contenant ZAZA
attribution du nom N_ZaZA

Mais je ne sais comment faire

lors de mes recherches j'ai trouv=E9 et cr=E9e ces bouts de codes

Cells.Find(What:=3D"ZAZA", After:=3DActiveCell, LookIn:=3DxlFormulas, L=
ookAt _
:=3DxlPart, SearchOrder:=3DxlByRows, SearchDirection:=3DxlNext, Mat=
chCase:=3D _
False, SearchFormat:=3DFalse).Activate

et

ActiveWorkbook.Names.Add Name:=3D"N_ZaZa", RefersToR1C1:=3D"=3DFeuil1!R=
87C3"

Une id=E9e ou une aide ?

Merci

2 réponses

Avatar
ThomThom63
Bonjour,

Si mes souvernirs sont exacts, tu dois pouvoir utiliser la formule
INDIRECT, qui te permet de composer une référence que tu peux exploiter.

Cells.Find(What:=INDIRECT("N_ZaZa")...


Le 13/03/2014 09:40, Fredo(67) a écrit :
Bonjour,

J'ai un tableau de plusieurs centaine de lignes.
Je présente ce tableau selon certain type de tri (tri sur le nom, tri sur le matricule, tri sur le chantier)

Je voudrais pouvoir nommer la cellule contenant le nom "ZAZA" (en lui donnant le nom "N_ZaZa"

Bien évidemment je ne connais pas l'adresse de cette cellule, car elle change en fonction du type de tri.

Voilà la syntaxe auquel j'ai pensé :

Suppression nom N_ZaZa
Recherche cellule contenant ZAZA
attribution du nom N_ZaZA

Mais je ne sais comment faire

lors de mes recherches j'ai trouvé et crée ces bouts de codes

Cells.Find(What:="ZAZA", After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:úlse).Activate

et

ActiveWorkbook.Names.Add Name:="N_ZaZa", RefersToR1C1:="þuil1!R87C3"

Une idée ou une aide ?

Merci

Avatar
Fredo(67)
Voilà les résultats de mon travail


cela semble marcher, mais je suis sur qu'il y a plu ssimple

Sub Macro2()
Dim LiGNe
Dim CoLoNe
ActiveWorkbook.Names("N_ZaZa").Delete
Application.Goto Reference:="noms"
Cells.Find(What:="ZAZA", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNe xt, _
MatchCase:úlse, SearchFormat:úlse).Activate
LiGNe = ActiveCell.Row
CoLoNe = ActiveCell.Column
ActiveWorkbook.Names.Add Name:="N_ZaZa", RefersToR1C1:="þuil1!R" & LiGNe & "C" & CoLoNe


End Sub


Le jeudi 13 mars 2014 09:51:32 UTC+1, ThomThom63 a écrit :
Bonjour,



Si mes souvernirs sont exacts, tu dois pouvoir utiliser la formule

INDIRECT, qui te permet de composer une référence que tu peux exploit er.



Cells.Find(What:=INDIRECT("N_ZaZa")...





Le 13/03/2014 09:40, Fredo(67) a écrit :

> Bonjour,

>

> J'ai un tableau de plusieurs centaine de lignes.

> Je présente ce tableau selon certain type de tri (tri sur le nom, tri sur le matricule, tri sur le chantier)

>

> Je voudrais pouvoir nommer la cellule contenant le nom "ZAZA" (en lui d onnant le nom "N_ZaZa"

>

> Bien évidemment je ne connais pas l'adresse de cette cellule, car ell e change en fonction du type de tri.

>

> Voilà la syntaxe auquel j'ai pensé :

>

> Suppression nom N_ZaZa

> Recherche cellule contenant ZAZA

> attribution du nom N_ZaZA

>

> Mais je ne sais comment faire

>

> lors de mes recherches j'ai trouvé et crée ces bouts de codes

>

> Cells.Find(What:="ZAZA", After:¬tiveCell, LookIn:=xlFormul as, LookAt _

> :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext , MatchCase:= _

> False, SearchFormat:úlse).Activate

>

> et

>

> ActiveWorkbook.Names.Add Name:="N_ZaZa", RefersToR1C1:="þu il1!R87C3"

>

> Une idée ou une aide ?

>

> Merci

>