Excel : Fonction Dynamique

Bonjour,

Je suis un éleveur et comme vous pourrez le voir dans le fichier ci-joint simplifié, je fais de la saisie régulière d'information (à partir de la ligne 39).

Malheureusement, j'atteins très vite une grande quantité d'information et vu le format de saisie il est difficile d'en tirer une analyse claire.

J'ai donc pensé à extraire ces données (date de la saisie, age et poids) en fonction de l'individu puis à utiliser un graphique pour avoir une visibilité rapide et précise de la situation.

En fouillant sur internet, j'ai trouvé des fonctions matricielles qui permettent l'extraction des données mais dans mon cas, ça ne marche que pour le poids et je ne sais pas où se trouve l'erreur..

{=GRANDE.VALEUR(SI(TabCor[Nom]=$B$3;TabCor[POIDS];0);LIGNE((INDIRECT("1:"&LIGNES(TabCor[Nom])))))}

Celle-ci marche pour le poids.
{=INDEX(INDIRECT(A$5);EQUIV(1;(TabCor[POIDS]=$B6)*(TabCor[Nom]=$B$3);0))}

Celle-ci, utilisée pour l'âge et la date, ne fonctionne pas

Aussi, si vous avez une idée pour améliorer la visibilité et l'analyse des données collectées, je suis preneur ! J'ai pensé à utiliser les filtres manuelles mais ça prendra trop de temps pour filtrer chaque individu sachant que j'en possède plusieurs.

Merci d'avance !

17fichier-aide.xlsm (61.66 Ko)

Bonjour

La première chose à faire est de compléter ton profil en indiquant ta version Excel car les solutions possibles ne sont pas les mêmes...

Bonjour,

En attendant les précisions, voici le fichier avec vos formules corrigées:

Cdlt

Bonsoir,

@78chris, comme demandé j'ai complété mon profil. La version d'excel que j'utilise est celle de 2016, version FR.

Merci @Arturo83 pour ton aide, les formules fonctionnent effectivement !

Soit dit en passant, est-il possible de faire en sorte que les données se cumulent par insertion de ligne (uniquement si la donnée existe)? D'après ce que j'ai pu constater, le nombre de données est limité à la plage dédiée, en l'occurrence, ici, 16 lignes. Je n'aimerais donc pas avoir à retaper manuellement toutes les formules une fois qu'elles auront atteint la ligne 16ème ligne par exemple

Je suis également toujours ouvert à une quelconque proposition d'analyse de données.

RE

On va donc pouvoir utiliser PowerQuery mais ce qui manque dans ta description c'est ce que tu veux analyser concrètement

Par animal ? Quoi exactement ?

Par comparaison de plusieurs animaux ?

Une 1ère proposition qui liste l'animal choisi et une seconde qui récupère le tableau classé, filtré via un segment et l'utilise pour un graphique

Tu utilises un tableau structuré : il faut coder en conséquence : bien plus simple et efficace

6chiens-pq.xlsm (79.59 Ko)

Re,

Tout d'abord, j'ai effectivement envie d'analyser chaque animal individuellement: son poids en fonction de son âge.

La 2ème proposition (segment + graphique en vert) m'a d'ailleurs énormément plu et je pense que c'est ce dont j'ai besoin ! Grâce à ça, j'ai pu découvrir l'existence des segments ^^

Néanmoins, j'ai eu quelques difficultés à comprendre le processus. Tu as donc dupliqué le tableau de saisie (ligne 30) auquel tu as lié un segment puis un graphique, n'est-ce pas? Si c'est le cas est-ce que ce même tableau dupliqué est nécessaire? car avec le temps il deviendra de plus en plus long

Je n'ai pas réussi à trouvé comment est-ce que tu as réussi à exclure les lignes où le poids était vide (un autre filtre caché?) ni à comprendre le sens de ta macro :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Choix]) Is Nothing Then Exit Sub
ThisWorkbook.RefreshAll
End Sub

Enfin et le plus important, lorsque j'ai essayé d'ajouter de nouvelles informations en insérant 3 lignes après la ligne 30, le tableau vert et graphique ne se sont pas actualisés et les nouvelles données n'ont pas été prises en compte. Ai-je manqué une information?

Je sais que ça fait beaucoup de question à la fois et je te remercie donc de ton aide très précieuse !

Bonjour,

Hormis la solution de 78Chris que je salue, plus moderne et dans l'air du temps, je continue sur ma proposition comme ça vous aurez le choix.

Si vous devez agrandir vos tableaux, il faut dans un premier temps les séparer, c'est ce que j'ai fait ici, le tableau de saisie des données est sur la feuille "Tableau des relevés".

Ensuite les tableaux individuels sont convertis en tableaux structurés avec une longueur de plage déterminée, que vous pourrez redéfinir par la suite si elles ne sont pas assez grande.

Les formules concernant les poids ont été modifiées pour pouvoir les inclure dans les tableaux structurés.

Cdlt

Bonjour à tous

Re,

...Tu as donc dupliqué le tableau de saisie (ligne 30) auquel tu as lié un segment puis un graphique, n'est-ce pas? Si c'est le cas est-ce que ce même tableau dupliqué est nécessaire? car avec le temps il deviendra de plus en plus long

Je n'ai pas réussi à trouvé comment est-ce que tu as réussi à exclure les lignes où le poids était vide (un autre filtre caché?) ni à comprendre le sens de ta macro :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Choix]) Is Nothing Then Exit Sub
ThisWorkbook.RefreshAll
End Sub

Enfin et le plus important, lorsque j'ai essayé d'ajouter de nouvelles informations en insérant 3 lignes après la ligne 30, le tableau vert et graphique ne se sont pas actualisés et les nouvelles données n'ont pas été prises en compte. Ai-je manqué une information?

Comme je l'ai dit il y a 2 solutions, les deux reposant sur PowerQuery

  • La première permet de choisir un nom dans la liste déroulante (liste aussi mise à jour par PowerQuery) et d'extraire les données de l'animal pour y associer un graphique.
    Le code VBA actualise les requêtes de cette solution quand on choisit un autre animal (la cellule de la liste déroulante est nommée Choix).
    Dans cet exemple je n'ai pas supprimé les lignes sans pesée (faisable) ni construit le graphique
  • La seconde récupère tout le tableau mais le trie et filtre les pesées vides.
    Effectivement le tableau va grandir en même temps que l'original mais on peut le placer sur un autre onglet et ne garder que le segment et le graphique au-dessus de la source
    Si la source change, dans la mesure où elle la saisie se fait via un userform, il faut à la fin du code du userform, ajouter le code ThisWorkbook.RefreshAll

@arturo

Hormis la solution de 78Chris que je salue, plus moderne et dans l'air du temps...

On se croise souvent, ici et ailleurs.

N'aurais-tu pas envie de passer à une version plus récente pour humer l'ai du temps, voire y naviguer ? Il y a pas mal de solutions pour ce faire...

Bonjour à tous,

Merci Chris et Arturo pour votre aide !

Je pense que je vais probablement avoir recours aux deux idées (pas pour le même but bien évidement ).

@Chris Je vais opter pour la deuxième solution et voire si j'arrive à l'adapter à mes données (en commençant déjà à apprendre à utiliser query power ). Si je rencontre des difficultés, j'essayerai de te contacter en message privé.

Merci encore pour votre aide !

@ 78chris,

N'aurais-tu pas envie de passer à une version plus récente pour humer l'ai du temps, voire y naviguer ? Il y a pas mal de solutions pour ce faire...

J'y pense mais je ne suis pas pressé, ce qui me freine c'est quelle option prendre 2019 ou bien 365?

Je prends le temps d'y réfléchir parce que, hormis les interventions sur les forums, je n'en ai plus beaucoup l'utilité.

Cdlt

RE

Dans ce cas je supprime ce qui est lié à la solution 1, pour faciliter la compréhension.

Les étapes de la requête sont listées à droite dans PowerQuery et le détail visible dans la barre de formule et cliquant sur le petit rouage

Si tu coinces sur une étape reposte

12chiens2-pq.xlsm (67.98 Ko)

Merci @78chris, ça m'est très utile !

Rechercher des sujets similaires à "fonction dynamique"