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 :

Fonction INDEX avec matrice de taille variable [XL-2003]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Points : 31
    Points
    31
    Par défaut Fonction INDEX avec matrice de taille variable
    Bonjour à tous,

    Je suis en proie à un problème difficile à résoudre malgré mes recherches.

    J'explique :

    J'ai un tableau de statistiques à monter pour plusieurs départements. Pour simplifier le travail de publication, chaque département a une feuille dans un fichier Excel et les données sources sont dans la dernière feuille appelée "Base".

    Dans cette base, chaque ligne concerne un service d'un département (une seule ligne par service). Le tableau de stats sert à disposer différemment les informations.

    J'utilise donc "INDEX" et "EQUIV" pour importer les données de la base. Sauf que cette base est de taille variable. Du coup, pour utiliser INDEX de façon optimisée, J'ai besoin d'avoir une des coordonnées de la matrice qui soit une variable. Ex : INDEX(Base!$A$2:variable;...)

    J'ai essayé des tas d'astuces, avec INDIRECT, avec ADRESSE, etc. je ne suis arrivé à rien.

    Auriez-vous une solution SVP?

  2. #2
    Membre émérite
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Points : 2 375
    Points
    2 375
    Billets dans le blog
    14
    Par défaut
    Bonjour
    Il te suffit de nommer tes colonnes
    Avec 2003
    Bandeau en haut
    Insertion
    Nom, définir
    pour la colonne A en partant de A2 par exemple:
    en haut de la fenetre qui s'ouvre tu met un nom: colA
    en bas tu met cette formule decaler

    = decaler(A2;;;nbval(A:A)-1
    le moins 1 dans la formule permet de ne pas prendre en compte le titre de la colonne

    Et ensuite dans ton index equiv tu utilise les zones nommées
    =index(colB;equiv("toto";colA;0)
    L'imagination est plus importante que le savoir.... A . Einstein.
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur pour clore cette discussion.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 544
    Points : 935
    Points
    935
    Par défaut
    Bonjour,

    ne peut en aucun cas servir à récupérer l'adresse d'une plage. Mais il est très utile pour traiter des variables telles que celle-ci dans une formule.
    Dans l'onglet base
    en A2 le nom du service qui est aussi le nom de l'onglet.
    en B2 avec l'exemple d'une somme, à saisir en matricielle (saisie suivie de Ctrl+maj+entrée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(INDIRECT(A2&"!A2:A"&MAX(SI((INDIRECT(A2&"!A2:A65000"))<>0;LIGNE(INDIRECT(A2&"!A2:A65000"))))))
    la fonction nbval à la fragilité de ne pas détecter les lignes vides au milieu des autres et comme ce fichier sera l'agrégat de pleins d'utilisateur il vaut mieux prendre les devants.

    Michel

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses

    @cb_60 : j'ai essayé de mettre en œuvre la solution mais j'avais une erreur "#REF". J'ai donc tâtonné pour comprendre. Et comme ma plage utile fait 8 colonnes, j'ai corrigé la fonction en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = DECALER(Base!$A$2;;;NBVAL(Base!$A:$A)-1;8)
    Ca marche impeccable

    Par contre je ne sais pas si c'est plus économe en ressource que de balayer quelques centaines de lignes vides (si je fixe un nombre de lignes dont je serai sûr qu'il ne sera pas dépassé)

    En tout cas merci

    @Supermichou : Il ne doit pas y avoir de lignes vides dans ma base. J'avoue que je n'ai pas bien compris le concept de "saisie en matricielle". Serait-ce plus fin que la solution ci-dessus? (avant que je ne creuse plus loin en te demandant des explications supplémentaires). En tout cas merci de ton aide

  5. #5
    Membre éprouvé
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 544
    Points : 935
    Points
    935
    Par défaut
    Citation Envoyé par cyr.odi Voir le message
    Merci pour vos réponses

    @Supermichou : Il ne doit pas y avoir de lignes vides dans ma base. J'avoue que je n'ai pas bien compris le concept de "saisie en matricielle". Serait-ce plus fin que la solution ci-dessus? (avant que je ne creuse plus loin en te demandant des explications supplémentaires). En tout cas merci de ton aide
    Si pas de lignes vides, alors ok, mais à surveiller car c'est un risque d'avoir des infos erronées.
    certaines formules sur excel peuvent se combiner et traviller non pas sur des plages, mais sur des matrices. ça a l'air compliqué comme ça mais c'est juste des raccourcis pour éviter des résultats intermédiaires.
    leur saisie se finit non pas par entrée comme très souvent pour le reste, mais par Ctrl+maj+entrée. Cette combinaison de touches indique que c'est une matricielle. sinon, elle ne marche pas...
    les matricielles consomment plus de ressources que les autres fonctions mais font parfois ce que les autres ne peuvent pas faire.

    Au plaisir
    Michel

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Merci pour les précisions. On va faire un bilan de la fiabilité du fichier (pas que sur ce seul point) et je reviendrai ici si nécessaire.

    Mais j'aurai appris à bien négocier cette histoire de matrice à taille relative.

    Je clos le sujet en vous remerciant encore une fois

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

Discussions similaires

  1. [debutante] matrice de taille variable
    Par vanilla94 dans le forum Débuter
    Réponses: 1
    Dernier message: 26/02/2008, 15h07
  2. Formule INDEX avec matrice variable
    Par psycholymp dans le forum Excel
    Réponses: 2
    Dernier message: 11/12/2007, 23h27
  3. Réponses: 4
    Dernier message: 06/06/2007, 13h32
  4. JList avec cellules de tailles variables
    Par tyrsensei dans le forum Composants
    Réponses: 18
    Dernier message: 21/05/2007, 14h30

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