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 :

Comment incrémenter une référence absolue sur des centaines de lignes ?


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Comment incrémenter une référence absolue sur des centaines de lignes ?
    Bonjour,

    Dans le classeur Décompte il y a 2 feuilles :
    - Feuil1 : liste de personnes, 1 par ligne, avec leur nom dans la colonne A (zone nommée Feuil1_Noms), donc pas de doublon,
    - Feuil2 : liste de réalisations faites par chacune des personnes, dont le nom apparaît aussi dans la colonne A (zone nommée Feuil2_Noms) de cette feuille.

    Dans la Feuil1, je voudrais faire apparaître en colonne D le nombre de fois que chaque personne listée dans Feuil1 apparaît dans la Feuil2.

    J'ai donc écrit dans chaque cellule de Feuil1-colonne D la formule : NB.SI(Feuil2_Noms;A1)

    Les cellules de la colonne A de la Feuil1 ne peuvent pas être protégées car la liste est censée pouvoir évoluer au cours du temps. Ce qui fait que tout utilisateur peut faire un tri, un copier ou un couper sur cette zone, et modifier la position relative des cellules concernées.

    Exemple : je coupe A4, qui contient la valeur "nom 2", que je déplace en A9.
    La cellule D4 contient la formule : =NB.SI(Feuil2_Noms;A9) et donne toujours le décompte d'apparitions de nom 2, mais la cellule A4 est vide.
    La cellule D9 de Feuil1 contient la formule : =NB.SI(Feuil2_Noms;#REF!) et ne fait donc plus le total des apparitions de "nom 2" dans Feuil2.
    Et les choses empirent si je trie, car alors la cellule D16 fait face à une cellule A16 vide, et contient la formule =NB.SI(Feuil2_Noms;A21), qui fait donc référence à la ligne 21 et pas la 16...

    Pour y remédier, je voudrais pouvoir indiquer une référence absolue à A1 dans la formule de la cellule D1, donc sous forme $A$1, et pouvoir la recopier vers le bas en l'incrémentant, car sinon je vais devoir rentrer des 100aines de références : $A$2, $A$3, etc.

    Puis je ne permettrai le tri que sur les colonnes à gauche de la D, et je forcerai ainsi chaque formule de la colonne D de donner le résultat correspondant au vrai contenu de la cellule correspondante de la colonne A.

    J'ai tenté plusieurs solutions dans Feuil1 colonne D :
    - =NB.SI(Feuil2_Noms;ADRESSE(1;LIGNE(D20))) - ne marche pas,
    - =NB.SI(Feuil2_Noms;cellule("contenu";ADRESSE(1;LIGNE(D20)))) - Excel n'est pas content, d'ailleurs cellule reste en minuscule car erreur...

    Ci-joint le classeur Décompte.xls http://www.mediafire.com/?gylhjsctzyt pour visualiser ma description peut-être un peu confuse... Je travaille avec Excel 97.

    Merci d'avance à qui pourra m'aider.

    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    La formule devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(Feuil2_Noms;INDIRECT(ADRESSE(LIGNE();COLONNE(Feuil1_Noms))))

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Un grand merci "cousin de la Belle Province", je ne connaissais pas l'existence de la fonction INDIRECT().

    Dans l'aide d'Excel 97, elle n'est pas proposée dans le lien Voir aussi, et dans la liste Fonctions de recherche et de références le texte Renvoie une référence indiquée par une valeur de texte ne me "parlait" pas beaucoup...

    Juste pour le plaisir de comprendre : dans =NB.SI(Feuil2_Noms;cellule("contenu";ADRESSE(1;LIG NE(D20)))) pourquoi la fonction CELLULE() ne fonctionne-t-elle pas ?

    Cordialement.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    L'ordre des arguments dans la fonction ADRESSE est ligne;colonne et non l'inverse. La valeur qui te serait renvoyée dans la formule telle que tu l'a écrite serait celle de la cellule T1 ( LIGNE(D20) = 20, donc T en colonne ).

    De toute façon, comme tu dois préciser D20 dans ta formule, ça ne te serait d'aucune aide puisque la solution pas obligatoirement par la fonction LIGNE() qui renvoit le numéro de ligne de la cellule qui contient la formule.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Merci beaucoup pour ces précisions.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2013, 16h44
  2. Réponses: 5
    Dernier message: 26/08/2008, 16h00
  3. [Reflection.Emit] Comment charger une référence sur la pile ?
    Par davcha dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 05/06/2008, 13h56
  4. Comment avoir une référence sur une Vue
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 12/08/2005, 10h03
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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