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

Excel Discussion :

référence relative à une cellule saisie


Sujet :

Excel

  1. #1
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut référence relative à une cellule saisie
    Bonjour,

    je cherche à accéder au contenu d'une cellule en fonction de sa position par rapport à une autre.

    Bon, ça sera plus simple avec un cas concret je crois :
    - dans la cellule A10 j'indique une référence à une autre cellule quelconque (et variable), mettons '=A1'
    - dans la cellule B10, je voudrais récupérer la valeur de la cellule située 3 lignes plus bas que A1, soit A(1+3)=A4 en l'occurrence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       A	B
    1  a	
    2  b	
    3  c	
    4  k	
    5  l	
    6  m	
    7 
    8 
    9 
    10 a	k
    Et donc si j'indique '=A2' dans ma cellule A10, je veux qu'automatiquement ce soit la valeur de A(2+3)=A5 qui soit affichées en B10.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       A	B
    1  a	
    2  b	
    3  c	
    4  k	
    5  l	
    6  m	
    7 
    8 
    9 
    10 b	l
    Comment faire ça avec des fonctions Excel ?


    Edit : ah oui, sous Excel 97...

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Formule a mettre en B10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(INDIRECT($A$10;1);3;0)
    Jérôme

  3. #3
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Presque...

    Ca marche si j'écris la chaîne de caractères "A1" en A10,
    mais pas si j'écris la formule "=A1" en A10.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       A	B
    1  a	
    2  b	
    3  c	
    4  k	
    5  l	
    6  m	
    7 
    8 
    9 
    10 A1	k

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    La, je ne vois pas comment on peut retrouver une référence a une cellule si cette référence est dans une formule
    Jérôme

  5. #5
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Ok, ça doit sûrement pas être possible, je vais faire autrement en passant par une 3e cellule dans laquelle j'indique le numéro de ligne et générer les formules de mes 2 cellules A10 et B10 à partir de cette 3e...
    Merci.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Bonsoir,

    voici une solution, en admettant que tu connaisses ta plage initiale (ici A1:A7)et que tes données se trouve toujours en colonne A (pour la concaténation) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(INDIRECT(CONCATENER("$A$";INDEX(EQUIV(A10;A1:A7;0);1));1);3;0)

  7. #7
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Très fort !
    Et ça marche sur du multi-onglets ?

    J'essaye.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Bonjour,

    Une autre solution :

    =INDEX(A1:A9;EQUIV(A10;A1:A9;0)+3)

  9. #9
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Pas mal, mais encore faut-il que la valeur soit unique dans la colonne !
    Je t'ai fait une petite fonction, qui marche pas mal.
    Mais elle n'est pas intéressante vraiment.
    Pour une raison que je ne perçois pas, la fonction ne se calcule qu'une seule fois.
    Il faudrait que tu vérifies si tu a le même fonctionnement sur ta machine.

    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
    '---------------------------------------------------------------------------------------
    ' Objet     : Renvoyerla valeur d'une cellule décalées (en Nb de lignes et colonnes) en
    '               fonction de la référence à une cellule mentionnée dans une autre cellule
    ' Arguments : CelluleFormule ==> Cellule contenant la formule cers la cellule de
    '               référence. Cette cellule doit contenir une référencce sous la forme
    '               = REFERENCEUNIQUE
    '             NbLignes ========> Nbre de lignes de décalage     Défaut : 0
    '             NbColonnes ======> Nbre de colonnes de décalage   Défaut : 0
    ' Retour    : La fonction renvoie la valeur de la cellule décalée. Si la référence n'est
    '               pas valide, la fonction renvoie la valeur d'erreur #Ref!
    '---------------------------------------------------------------------------------------
    '
    Function CelluleDecalee(CelluleFormule As Range, _
                            Optional NbLignes As Long = 0, _
                            Optional Nbcolonnes As Long = 0) As Variant
        On Error GoTo CelluleDecalee_Error
        Dim sTemp As String
        sTemp = Mid(CelluleFormule.Formula, 2)
        CelluleDecalee = Range(sTemp).Offset(NbLignes, Nbcolonnes).Value
        Exit Function
    CelluleDecalee_Error:
        CelluleDecalee = CVErr(XlCVError.xlErrRef)
    End Function

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Bonjour Maxence,

    Tu as tout à fait raison de le préciser, mais comment savoir à quelle cellule il faut se référer lorsqu'il y a des doublons ?

    Le problème n'est pas dans la formule, mais dans la question.
    A défaut de précision, j'ai supposé qu'il ny avait pas de doublons ou que c'était la première occurence.

  11. #11
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Oui j'ai supposé de même pour ma formule (inutilement bien plus compliquée que la tienne ullan !) étant donné l'exemple fourni...

  12. #12
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Bonjour,
    Pour obtenir ton k, tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(ADRESSE(LIGNE()-6;1))
    Tu peux aussi introduire une colonne supplémentaire pour entrer le 6 et pouvoir le changer.
    En C1 par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(ADRESSE(LIGNE()-C1;1))
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  13. #13
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Post

    Si tu arrive à récupérer la formule entrée en A10 sous forme de texte pour mettre à jour automatiquement B10 en reprenant l'adresse entrée modifiée par extraction de lettres chiffres dans celle-ci, dis le moi.
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Salut Alqualonde,

    Ta formule pouvait être simplifiée comme suit :
    =INDIRECT("A"&EQUIV(A10;A1:A6;0)+3)

    Pour répondre à jfontaine et à Tdeny, il y a moyen de passer par les macros XL4
    Menu Insertion / Nom / Définir
    Nom dans le classeur : formule (ou autre chose, au choix)
    Fait réference à : =LIRE.CELLULE(6;Feuil1!$A$10)
    Dans la cellule : =DECALER(INDIRECT(STXT(formule;2;7));3;0)
    le 0 final (zéro) peut être supprimé,
    le 2 parce que formule renvoie =A1, donc il faut supprimer le =
    le 7 parce que la longueur maximum d'une référence est de 7 caractères (IV65536)

  15. #15
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Houlala, que de réponses !

    J'avais donné un exemple simplifié pour que ce soit plus clair, mais voilà précisément mon besoin :

    - j'ai 1 onglet ('exemples 10.07.2007') avec 1 donnée (texte) sur chaque ligne (a priori pas de doublon, mais rien ne l'interdit)
    - ces données sont réparties en 2 groupes ordonnés : A2:A47 et A52:A97
    - A(n) correspond à A(n+50) (donnée avant vs donnée après)

    - dans un autre onglet (décomposition VV134 10.07.2007) j'indique la référence à 1 donnée du 1er groupe (='exemples 10.07.2007'!A7) dans une 1ère cellule
    - dans une 2e cellule de décomposition VV134 10.07.2007 j'indique la référence correspondante du 2e groupe de données qui se trouve donc 50 lignes plus bas (='exemples 10.07.2007'!A57)
    - ensuite des calculs sont évidemment faits en utilisant les valeurs de ces 2 cellules

    Ce que je voudrais, c'est ne pas avoir à saisir la référence dans la 2e cellule quand je change celle dans la 1ère, mais que ça prenne automatiquement la référence de la donnée située 50 lignes plus bas.


    Merci pour vos posts, je regarderai ça en détail mais en début de semaine.

Discussions similaires

  1. [XL-2007] Remplacé le nom d'un pivotfiels par la référence d'une cellule
    Par PASQUI62 dans le forum Excel
    Réponses: 0
    Dernier message: 09/10/2013, 18h29
  2. référence vers une cellule d'une autre feuille
    Par eno97 dans le forum Excel
    Réponses: 2
    Dernier message: 24/09/2012, 19h34
  3. référence d'une cellule
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2012, 21h45
  4. Récupérer la référence d'une cellule
    Par zeblln dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/03/2012, 10h41
  5. Référence relative à des cellules et performances
    Par Tententai dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/08/2007, 17h30

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