Récupérer le nom d'une cellule

rbouricha Messages postés 10 Statut Membre -  
 gégélabasse -
Bonjour,

je veux récupérer le nom d'une cellule! c simple je pense! j'ai cherché sur intenet, ils disent que je dois utiliser ".name.name" mais ça ne fonctionne pas. j cette erreur là : "Application-defined or object-defined error" "runtime error 1004"!
j'ai déja ouvert un workbook.
voici mon code:

Dim str As String
For Each sheet In ActiveWorkbook.Sheets
For Each cell In ActiveSheet.Cells
str = cell.name.name
MsgBox str
Next cell
Next sheet

j'ai cherché sur google avant de poder ma question mais j que le ".name.name"!!!
aidez-moi svp.c urgent
merci bcp.

3 réponses

ddez
 
Oui effectivement, ca marche pas.
Enfin ca provoque une erreur si la cellule n'a pas été nommée.
Et c'est bien :
Range("A1").Name.Name

La seule chose qu'il te reste à faire est donc de traiter l'erreur :
Sub listeNames()

    For Each cellule In ThisWorkbook.Sheets(1).Range("A1:A10").Cells
        On Error Resume Next
        MsgBox (cellule.Name.Name)
        On Error GoTo 0
    Next cellule

End Sub
0
ddez > rbouricha Messages postés 10 Statut Membre
 
En fait j'aimerai savoir si on parle bien de la même chose.
La propriété Range("").Name.Name renvoie le nom d'un groupe de cellules.
Pour nommer un groupe de cellule, il faut :
- soit le sélectionner et entrer une valeur dans la "zone nom" (c'est la zone en haut à gauche de la barre de fonctions où se trouve en général l'adresse de la zone)
- soit le sélectionner et aller dans "Insertion/Nom/Définir" et entrer sa valeur.

Ainsi on peut récuperer cette zone avec la commande suivante :
Range("maZone") 'où maZone est le nom donné

Normalement, si il y a des cellules nommées, le code que j'ai posté tout a l'heure doit marcher.

Par contre, si les noms cherchés concernent plusieurs cellules groupées, la c'est différent...
On peut les lister avec cette fonction :
Sub listeZones()
    For Each nom In ActiveWorkbook.Names
        MsgBox ("zone[" & nom.Name & "] : " & Range(nom).Address)
    Next nom
End Sub
0
ddez > rbouricha Messages postés 10 Statut Membre
 
Au fait, si c'est l'adresse de la cellule que tu veux récupérer, c'est tout simplement ca :
Dim cellule as Range
Set cellule=Range("B2")
MsgBox cellule.address 'affiche B2
0
ddez > rbouricha Messages postés 10 Statut Membre
 
La ca devient super complexe car le code suivant
cellule.Name.Name
ne fonctionne que si cellule représente la zone exacte qui est nommée.
0
ddez > rbouricha Messages postés 10 Statut Membre
 
Y'a pas de mal,
Si on répond, c'est que ca ne dérange pas ;)
Bon courage
0
gégélabasse
 
MsgBox Range(cellule).Address() retourne $B$5 si cellule est égal à B5 et $B$5:$B$6 si B5:B6
Attention il faut borner par un guillemet la valeur réelle de cellule donc par exemple "B5:B6".

Uniquement dans le cas d'une cellule nommée (Menu: Insertion/Nom/Définir):
1) créez celluleNom pour définir B5:B6
2) MsgBox Range("B5:B6").Name retourne à l'identique à ci-dessus
3) MsgBox Range("B5:B6").Name.Name retourne celluleNom

Attention: Petit rappel pour la compréhension des néophites, ces exemples s'utilisent dans une macro en vba.

Comme il est précisé par ddez, il faudra traiter les erreurs.
0
Pawn
 
as-tu essayé
str = ActiveCell.Value ?
0
rbouricha Messages postés 10 Statut Membre
 
non Pawn.ça ne me donne rien dans le msgbox.c vide.
en plus moi j besoin du nom de la cellule et non de sa valeur(ou son contenu)!
-1
ddez
 
Salut,

As tu essayé :
str = cell.name

(Oublie pas de mettre un point d'arret si tu n'as pas envie de cliquer sur "OK" 49744125 fois)
-1
rbouricha Messages postés 10 Statut Membre
 
oui je l'ai essayé mais ça donne rien.
juste une erreur "Application-defined or object-defined error"
-1