IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tester si une cellule a un nom


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 11
    Par défaut Tester si une cellule a un nom
    Allo tt l'monde...

    petit soucis pour tester si une cellule excel a un nom...
    J'ai associé des noms aux cellules et j'aimerais testé si elle a un nom...
    En fait a travers une macro, l'utilisateur selectionne une plage de cellule et supprime son comptenu... et le nom associé...

    Le hic c'est que ca plante quand la cellule n'a pas été renommé...
    Savez vous comment faire pour tester si une cellule porte un nom... Que ce me renvoie, vrai faux true oui ou bip j'm'en calice.. mais la je bloque grave... Merci


    J'ai ca comme code qui plante...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom_cellule = cellule.Name.Name
     
    ActiveWorkbook.Names(Nom_cellule).Delete
    ActiveCell.ClearContents

    Idée conseils le tout est le bienvenus...

    merci

    [Edit] Balises Code powered by Xo, merci d'y penser ;) [/Edit]

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Je n'y connais pas grand chose en VBA, mais une cellule a toujours un nom, non ? Que ce soit le nom par défaut (A1, B1) ou un nom modifié n'y change rien ?

    Bref, merci pour ton bout de code, mais pourrais-tu nous préciser à quelle ligne ça plante, et quel est le message d'erreur obtenu STP ?
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Hello!
    Avec Ouskel'n'or, on a répondu à une question qui ressemblait drôlement à la tienne il y a pas longtemps.
    Fais une recherche avancée.
    Je regarde de mon côté si je le retrouve!

  4. #4
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Salut,


    Il existe des sujets traitant déjà de ce problème...

    Fais une recherche avancée sur le site.



    Petite indication : celui-là devrait t'intéresser :
    http://www.developpez.net/forums/vie...+cellule+excel

    @+

    Théo

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 11
    Par défaut
    Oui ca serait mieux...
    Ca plante a la première ligne que j'ai écris...


    Nom_cellule = cellule.Name.Name

    Le message d'erreur est erruer d'exécution '1004'
    Erreur défini par l'application ou par l'objet...

    Toutes les cellules on un nom peut être mais cette ligne ne fonctionne pas quand la cellule n'a pas été renommé...

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Regarde le lien qui vient de t'être envoyé. Tu dois à nouveau "fouiller" la liste des cellules nommées avant de savoir si tu peux faire un .name sur ta cellule.

  7. #7
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    J'ai fait ce test à partir du code donné par Megaxel dans la référence donnée aussi par lui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub test()
        'déclarations
        Dim nms As Names
        Dim Ok As Boolean
        Dim i As Integer
        Dim Nom_Cell As String
        'initialisations
        Ok = False
        Set nms = ActiveWorkbook.Names
        'teste si la cellule active correspond à un des noms
        For i = 1 To nms.Count
            If nms(i).RefersToRange.Address = ActiveCell.Address Then Ok = True
        Next
        'si oui
        If Ok = True Then
            Nom_Cell = ActiveCell.Name.Name
            MsgBox Nom_Cell
          'sinon
          Else
            MsgBox "Sans nom défini"
        End If
    End Sub
    Le problème est que ça ne teste que si la cellule active est nommée mais pas si elle est dans une plage nommée.

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Exact, Zaza!
    Mais il me semble qu'il existe une fonction Intersect(), ou un truc du même genre, qui permet de dire si une cellule appartient à une plage.
    Je regarde ça de plus près...

  9. #9
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Voila, avec ça (le code de Zaza un peu modifié), tu obtiens le nom de la plage qui contient la cellule active.
    Et sur le même modèle, il est facile de trouver les plages dans une zone sélectionnée...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Sub NomCellule()
        'déclarations
        Dim nms As Names
        Dim Ok As Boolean
        Dim i As Integer
        Dim Indice As Integer
        Dim Nom_Cell As String
        'initialisations
        Ok = False
        Set nms = ActiveWorkbook.Names
        'teste si la cellule active correspond à un des noms
     
        For i = 1 To nms.Count
            'If nms(i).RefersToRange.Address = ActiveCell.Address Then Ok = True
            If Not Intersect(ActiveCell, nms(i).RefersToRange) Is Nothing Then
                Ok = True
                Indice = i
            End If
        Next
        'si oui
        If Ok = True Then
            Nom_Cell = nms(Indice).Name
            MsgBox Nom_Cell
          'sinon
          Else
            MsgBox "Sans nom défini"
        End If
    End Sub

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je sais que c'est résolu mais j'ai ça à te proposer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub NomDeCellule()
    Set nms = ActiveWorkbook.Names
    For r = 1 To nms.Count
        If nms(r).Name <> "" Then
            MsgBox "Nom = " & nms(r).Name & " Adresse = " & nms(r).RefersToRange.Address
        End If
    Next
    Affiche toutes les cellules nommées et leurs adresses

    Un test sur une adresse donnée te permet directement de savoir si elle est nommée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if nms(r).RefersToRange.Address = Cells(4,3).address and nms(r).Name <>"" then msgbox "Y'a un nom"
    A toutes fins utiles

    A+

  11. #11
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Houaoah! (comme dirait Sol)

    Simple! tester s'll y a effectivement un nom... On avait le nez collé dessus !

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Rendon à SilkyRoad ce qui lui appartient, je n'ai pas retrouvé son code mais je m'en suis complètement inspiré car il avait eu la bonne idée de préciser dans son post "qu'il y avait tout dans l'aide"...

    Merci SilkyRoad

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POI] Appeler une cellule par son nom
    Par Galak extra dans le forum Documents
    Réponses: 9
    Dernier message: 17/06/2008, 14h33
  2. Comment tester qu'une cellule vaut #N/A ?
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2008, 14h01
  3. Coller avec liaison une cellule grâce à son nom
    Par Remkix dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2007, 15h09
  4. [VBA-E]Tester si une cellule est vide dans un cas particulier
    Par tonnick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2007, 10h12
  5. Tester si une cellule est vide
    Par amka dans le forum Access
    Réponses: 1
    Dernier message: 09/08/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo