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.
Configuration: Windows XP
Firefox 2.0.0.16

3 réponses

  1. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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
  2. Pawn
     
    as-tu essayé
    str = ActiveCell.Value ?
    0
    1. 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
  3. 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
    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