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 :

Variable dans un objet range()


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 28
    Par défaut Variable dans un objet range()
    Bonjour à tous,

    J'ai un fichier excel contenant un certain nombre de cellules nommées et je cherche à renommer celles-ci à l'aide d'un suffixe déterminé à partir du nom de la feuille active.
    Pour cela je balaye la plage contenant mes cellules nommée et je stock l'adresse de la cellule dans une chaine de caractère. Mon problème est que l'objet range ne reconnait pas ma variable Adr comme une adresse de type "$A$20" et j'obtiens une erreur 400.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim Adr, CellName As String
        For Each Cell In ActiveSheet.UsedRange.Columns("A:O").Cells
            Adr = Cell.Address
            CellName = Range(Adr).Name.Name
            If CellName <> "" Then
                MsgBox (CellName)
            End If
        Next
    Je ne parviens pas à trouver la syntaxe correcte pour récupérer le nom de ma cellule nommée.
    J'espère avoir été assez explicite , je vous remercie par avance de votre aide.

    Cordialement dude,

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 158
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne parviens pas à trouver la syntaxe correcte pour récupérer le nom de ma cellule nommée.
    Exemple pour connaître le nom donné à une cellule à l'aide du gestionnaire des noms : MsgBox [B]range("A2")/B].Name.Name

    Attention qu'il faut prévoir la détection des erreurs car si la cellule n'est pas nommée, la procédure renverra une erreur
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub T()
     Dim rng As Range, c As Range
     Set rng = Range("O2:O4")
     On Error Resume Next
     For Each c In rng
      Debug.Print c.Name.Name
     Next
     On Error GoTo 0
    End Sub
    Il reste évidemment la possibilité de passer par la collection Names
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 28
    Par défaut
    Re,

    Dans la variable Adr je stocke un chaîne de caractère du type "$A$21".
    Si j'écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = Range("$A$21").Name.Name 
    Msgbox(x)
    J'ai le résultat "Nom de la cellule $A$21".

    Alors que lorsque j'écris j'obtiens une 'erreur 400'.
    m'affiche pourtant bien "$A$21"

    Je ne sais pas si j'ai su expliquer correctement. =x

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour, dans la mesure où je ne sais pas à quoi correspondent Name.Name et Adr?????!!!

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 28
    Par défaut
    Adr c'est un String qui contient l'adresse de la cellule balayée.
    .Name.Name c'est une méthode qui me permet de récupérer le nom attribuée à la plage.

    Sur ma feuille j'ai un certain nombre de cellules dont le nom est du type SXX_MODELNAME_VariableName
    Par exemple si je suis au STEP1 d'un modèle TC03 ma feuille aura pour nom STEP01_TC03 et l'ensemble de mes cellules va commencer par S01_TC03_Variable Name
    Mon objectif est d'adapter l'ensemble des noms de mes cellules au nom attribué à ma feuille.

    Pour cela je balaye chaque cellule et je récupère son adresse avec Cell.Address que je stocke ensuite dans la variable "Adr".
    Je cherche ensuite à récupérer le nom de la cellule associé à cette adresse si celui-ci existe est different de "".
    Pour récupérer le nom je fais CellName := Range(Adr).Name.Name mais le fait de passer une variable en argument de Range() me retourne une erreur.
    Pourtant si je fait CellName := Range("$A$1").Name.Name je récupère bien le nom de ma cellule.

    Je cherche un moyen fonctionnel de faire passer une adresse de cellule stockée dans une variable en argument de l'objet Range.
    Excusez moi si le problème n'est pas clair, je suis un novice en programmation.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    j'ai l'impression que c'est très compliqué pourtant pour quelque chose de très basique !

    Au cas où, voir du côté de la fonction Evaluate, sait-on jamais ! …

    Sinon l'erreur ne provient pas de ta variable Adr de type Variant (!) mais du fait de la non gestion d'erreur
    quand la cellule n'est pas associée à un nom comme cela t'a pourtant déjà été évoqué !

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

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

Discussions similaires

  1. Récupération de variable dans un objet XBase
    Par jcachico dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 05/01/2012, 10h41
  2. Moitié de variable dans un objet windows.document
    Par kryogen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2009, 16h34
  3. Insérer une variable dans l'objet windows.document
    Par kryogen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/06/2009, 15h24
  4. attribuer a une variable a un objet range non contigue
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/03/2008, 20h01
  5. Variable dans l'instruction Range
    Par Lorenzole+bo dans le forum Excel
    Réponses: 1
    Dernier message: 27/11/2007, 23h49

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