Récupérer le nom d'une cellule

Fermé
rbouricha Messages postés 10 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009 - 7 août 2008 à 14:55
 gégélabasse - 10 août 2012 à 13:45
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

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 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 16:30
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 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 16:40
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 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 16:42
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 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 16:50
Y'a pas de mal,
Si on répond, c'est que ca ne dérange pas ;)
Bon courage
0
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
as-tu essayé
str = ActiveCell.Value ?
0
rbouricha Messages postés 10 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 16:00
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
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 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 8 mars 2009
7 août 2008 à 15:18
oui je l'ai essayé mais ça donne rien.
juste une erreur "Application-defined or object-defined error"
-1