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 :

Référence cellule nom/adresse absolue


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut Référence cellule nom/adresse absolue
    Bonjour à tous,

    j'ai un problème avec ma feuille de calcul sur lequel je bûche depuis un petit bout de temps...

    La feuille exemple ci-jointe illustre ce problème.

    Mode d'emploi :
    -On entre 1 chiffre dans la case jaune. Le même nombre de lignes est créée. On remplie ces lignes (valeurs 1 et 2), et le sous-total 1 est fait.
    -Même chose avec la 2eme case jaune. Le sous-total 2 est fait.
    -Click sur le bouton "OK" --> les valeurs sous-total sont exportées dans la feuille 2, et le total est fait. En vérité ce ne sont pas les valeurs, mais les références des cellules nommées "SOUSTOTAL1" et "SOUSTOTAL2" qui sont exportées, si bien que l'on peut modifier les valeurs de la feuille 1, celles de la feuille 2 changeront en même temps.
    Jusque là pas de problème.

    Ensuite, on clique sur "Nouveau". Une nouvelle case jaune apparait. Même démarche que précedemment (on remplit toutes les valeurs), puis click sur "OK". Et c'est là que le problème intervient. Les nouvelles valeurs sont exportées sur la feuille 2, mais du coup les valeurs déjà exportées vont prendre la même valeur.... Car elles sont référencées par rapport aux noms des cellules...

    Comment faire donc pour que les valeurs ne change pas, tout en restant "attachées" aux cellules correspondantes de la feuille 1 (pour être modifiées si l'on modifie les valeurs de la feuille 1).

    En gros, comment faire pour qu'une cellule référencée par rapport à une cellule nommée le devienne par rapport à l'adresse absolue de celle-ci?

    Voila, j'espère avoir été clair. Faire un essai sur la feuille exemple permet de beaucoup mieux cerner le problème (j'ai fait de mon mieux pour les explications, mais je comprend que cela reste un peu vague...)

    Merci d'avance pour vos réponses et conseils !

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Bonjour,

    mon problème n'a pas l'air d'inspirer grand monde ; je comprend vu la densité de l'explication et son caractère parfois peu clair.

    C'est pourquoi je réduirai ce problème à une autre question, je pense plus accessible : comment faire pour trouver la position absolue d'une cellule nommée.
    J'ai par exemple une cellule nommée "TEST" sur ma feuille, mais je ne connais pas sa position absolue. Y-a-t'il une macro qui puisse rechercher cette position (genre "A1" ou F47") et la donner en sortie?

    Merci d'avance

    Cordialement

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    msgbox range("test").Address
     
    msgbox range("test").Address(RowAbsolute:=False,ColumnAbsolute:=False)
    cordialement,

    Didier

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Bonjour,

    merci de ta réponse. Ce que je recherche va un peu plus loin. J'aimerais que l'adresse absolue trouvée puisse ensuite être réutilisée dans une macro.
    Cela s'écrirait grossièrement comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("test").Address = XY
    Range("A1").Value = Range("XY").Value
    Je ne veux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value  = Range("test").Value
    car la cellule nommée "test" peut être dénommée par la suite, et je voudrais que A1 garde sa valeur quoiqu'il arrive

    Vois-tu comment faire cela?

    D'avance merci

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Range("test").Address = XY
    Range("A1").Value = Range("XY").Value
    n'a pas de sens en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("test").Address = XY
    , n'a pas de sens tu ne peux pas attibuer une adresse à une cellule qui a un nom, mais attribuer un nom à une cellule, oui, la déplacer ensuite, oui aussi (ce qui au niveau code revient à faire un couper-coller) et dans lequel cas, la propriété Address (en lecture seule) de l'objet range retournera la bonne adresse à chaque fois.

    Range("A1").Value = Range("XY").Value
    veut dire que A1 prend la valeur de la cellule qui se nomme XY ...

    car la cellule nommée "test" peut être dénommée par la suite, et je voudrais que A1 garde sa valeur quoiqu'il arrive
    c'est ambigüe, si on considère que ce que tu veux est que A1 garde la valeur de la cellule qui a porté le nom de test à un moment donné, il faut faire ainsi :

    vois ainsi peut-être selon ton but..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub soluceDVP()
    Dim strmavariable As String
     
    'à l'instant voulu, tu mémorise l'adresse de test
    strmavariable = Range("test").Address 'ou  = Range("test").Address(RowAbsolute:=False,ColumnAbsolute:=False)
    'Tu alimentes A1 en fonction de cette adresse et non en fonction du nom, donc si le nom change d'adresse
    'et que tu met à jour A1, elle prndra la valeur de la cellule qui a pour adresse strmavariable, qui
    'a correspondue à un instant T à l cellule ayant pour nom test !
    Range("A1").Value = Range(strmavariable)
    End Sub
    cordialement,

    Didier

Discussions similaires

  1. [XL-2007] Référence à un nom de cellule en VBA
    Par Philippe608 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/01/2018, 02h01
  2. [TinyMCE] Problème adresses absolues et relatives
    Par will89 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 09/05/2007, 14h56
  3. Accès à un fichier avec une adresse absolue
    Par hmiezin dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2007, 00h25
  4. Adresse absolu de la dll dans un Webservice
    Par All Jinx dans le forum C++
    Réponses: 3
    Dernier message: 03/08/2006, 23h43
  5. [Excel] decaler de 2 lignes adresse absolue
    Par guns17 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/07/2006, 14h08

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