TCD - afficher la 1ère valeur

Bonjour à tous,

Comme vous pouvez le voir dans le fichier, j'ai actuellement une feuille uniquement destinée à la saisie des données "Saisie" et l'autre, "Tbord", j'essaie de synthétiser les informations grâce à des TCDs.

Mon souci se situe au niveau du "Prochain Vaccin", "Prochain Vermifuge", "Prochain Anti-tiques". Le TCD affiche l'historique des informations et non pas uniquement la première valeur rencontré pour cet individu.

Ayant une quantité importante d'informations, je ne peux pas non plus me permettre de revenir en arrière et de supprimer les anciennes données.

Afin de rendre cela plus esthétique, j'ai masqué les lignes comprenant les entêtes (L. 9, 13 et 17).

Que me proposez-vous?

Merci pour votre aide !

19fichier-aide.xlsm (93.47 Ko)

Bonjour

La date de saisie et l'âge de l'animal semblent décorrélés, voire incohérents.

As-tu besoin de l'historique des vaccins et traitements ? Si non, un seul TCD avec le derniers traitement de chaque ne suffirait-il pas ?

Bonsoir,

Si vous faites référence à la feuille de "saisie", l'âge correspond à l'âge de l'animal au moment de la saisie. Elle est normalement extraite d'une autre feuille grâce à la formule "RechercheV".

Il en est de même pour les prochains vaccins, vermifuge et anti-tiques qui sont extraits d'une autre feuille avant d'être fixé définitivement à l'aide d'une macro (au moment de la fermeture du classeur, la feuille saisie entière est copié puis collé en valeur uniquement).

Concernant votre deuxième question, j'ai effectivement besoin de l'historique de toutes les autres variables (poids, vaccin et traitements).

Dans la feuille "Tbord", seules ces trois variables n'en ont pas besoin et doivent uniquement afficher la valeur la plus récente : "Prochain Vaccin", "Prochain Vermifuge", "Prochain Anti-tiques".

Bonjour

Pour un même animal ceci ne colle pas

24/01/20221 ans 15 jrs
24/01/20222 ans 15 jrs
18/07/20211 ans 6 mois 9 jrs

Il faut respecter les règles du tableaux structuré :

  • pas de lignes vides : le tableau s'ajuste automatiquement dès qu'on saisie sur le ligne en dessous
  • une seule ligne de titres avec des titres explicites
  • le remplissage par VBA doit correspondre au tableau structuré (ListObject) pas à une plage
  • les TCD devraient être basés sur le tableau et non une plage ce qui permettrait de filtrer d'un clic tous les TCD sur le même animal

Les segments devraient être rattachés à tous les TCD

Une proposition avec une autre TCD caché sous le segment Race et une requête PowerQuery

Il faut que le choix ait été fait dans les 2 segments pour que cela fonctionne

13chiens2-pq.xlsm (88.71 Ko)

Bonjour,

Je tiens à m'excuser pour ces anomalies, le fichier original étant beaucoup trop volumineux, j'ai copié les deux feuilles puis j'ai supprimé toutes les données pour simplifier la lecture, ce qui a engendré ces incohérences.

Merci pour ta proposition, c'est ce dont j'avais besoin !

Malheureusement, j'ai essayé de l'incorporer dans le fichier original mais je rencontre des erreurs :

image image

J'ai copié/collé le code VBA lié à la feuille que vous m'avez écrit (en modifiant le numéro du tableau croisé dynamique), puis j'ai créé deux nouvelles requêtes en copiant/collant le code de "l'éditeur avancé" mais je reçois constamment cette erreur sur le code VBA et celle-ci au niveau des requêtes:

image

Je ne comprends pas l'erreur étant donné que le contenu des sources est le même peu importe les classeurs.

RE

Ce sont des cellules nommées correspondant au nouveau TCD caché

Attention le nom du TCD dans le VBA est celui d'un autre TCD pas celui qui est caché

Re,

En renommant les cellules, je ne reçois effectivement plus les erreurs en provenance du VBA. J'ai également remis le nom du TCD dans le VBA comme il était, et donc pas de celui qui est caché.

Sauf que maintenant j'ai 2 problèmes :

1) La requête est constamment en actualisation et ne génère donc pas les données voulues. Cela a d'ailleurs fait crash mon pc 2 fois xD

image

2) Le format obtenu du TCD est complètement différent de celui que vous m'avez offert

RE

Ce n'est pas un TCD mais un tableau structuré dont

  • la ligne d'en-tête n'est pas affichée
  • la couleur des textes de la colonne 1 est le blanc
  • les lignes ont une hauteur permettant de s'aligner sur les boutons servant de titres
  • l'option d'ajustement auto de la largeur des colonnes (et hauteur de lignes) est désactivée

Désactiver aussi la mise à jour en arrière plan des 2 requêtes

Sur l'exemple le VBA ne génère pas d'erreur ni de boucle : il doit y avoir une erreur dans la mise en œuvre ou le classeur réel est très différent de l'exemple...

Sur votre image TabSaisie contient 106 erreurs... La requête qui exploite la table TabSaisie ne peux fonctionner en cas d'erreurs sur les dates notamment

Nous n'avons non plus le fichier lié : le tableau source contient des liaisons...

Bonsoir,

Ayant passé l'après-midi dessus, j'ai l'impression que plus je manipule plus je crée d'erreur...

J'ai donc essayé de créer un fichier le plus proche possible de l'original dans l'espoir de trouver une solution.

Voici donc les étapes que j'ai réalisé depuis :

1) Nommer les cellules correspondant au nouveau TCD caché (D14 : "Race" ; D15: "Nom")

2) Créer les requêtes en copiant/collant les codes de "l'éditeur avancé". Néanmoins j'ai modifié un mot dans la première requête : each List.Max([Date]) au lieu de each List.Min([Date])

3) Désactiver aussi la mise à jour en arrière plan des 2 requêtes, voici ce que j'ai trouvé sur internet :

image

4) J'ai renommé la zone S10:T12 en "Prochains_Traitements"

Je ne pense pas avoir oublié quoi que ce soit.

Sauf que je rencontre toujours des problèmes:

image

Je ne sais pas si c'en est la cause, mais les données du PQ ne sont toujours pas actualisées et/ou filtrées

Bonjour

Il n'y a pas à renommer les zones S10:T12 : c'est un tableau structuré qui hérite naturellement son nom de la requête qui le génère. Tu peux le vérifier dans l'exemple.

Dans la mesure où on filtre les dates futures, et qu'on souhaite la prochaine c'est bien MIN et non MAX si toute fois l'exemple est représentatif...

Les zones nommées Race et Nom correspondent chacune à la cellule qui contient la race et le nom lorsque qu'on a sélectionné l'un et l'autre dans les segments, et ils sont en colonne E et non D sur l'exemple

Pour copier une requête il est inutile de passer par l'éditeur avancé : on sélectionne les requêtes, soit dans le volet Excel qui les liste (Données, Requêtes et Connexions) , soit dans PowerQuery, et on le colle de même, soit dans le volet, soit dans PowerQuery.

La désactivation de la mise à jour en arrière plan se fait depuis le volet Excel : clic droit sur le nom de le requête, Propriétés

Comme déjà précisé, si le tableau source contient des erreurs sur les colonnes dates dans la source, la requête ne marche pas

As-tu lié les 2 segments à tous les TCD ?

Bonjour,

Merci pour ces conseils !

Concernant le MIN, j'ai remarqué qu'on obtenait la 1ère valeur entrée et non pas la dernière. Le but étant de connaitre la prochaine date, MAX m'a permis de résoudre ce souci. En relisant ma demande, je me suis rendu compte que je m'étais mal exprimé, toutes mes excuses.

J'ai bien désactivé la mise à jour en arrière plan et j'ai tenté de comprendre ce qui n'allait pas mais sans succès... Les données ne sont pas prises en comptes et l'actualisation prend un temps fou ! J'ai donc temporaire désactivé au niveau du VBA l'actualisation des données en activant la feuille.

image

Je vous partage à nouveau un fichier le plus proche possible de l'original.

Merci pour votre temps et patience !

6fichier-copie-2.zip (319.69 Ko)

RE

Décidément tu ne lis pas attentivement : il y a un filtre sur les dates FUTURES donc cela ne lit pas la 1ère date entrée mais la prochaine FUTURE

Par ailleurs j'ai donné des conseils dans mon post d'Hier à 11:05 concernant les tableaux structurés mais tu ne les suis pas...

Il y a 329 lignes en erreur dans les dates et âges : j'ai modifié la requête pour éliminer les lignes en erreur et modifié l'enchaînement des requêtes pour filtrer une seule fois et plus en amont.

Ton tableau est volumineux donc la requête prend effectivement du temps (2 à 3 secondes sur mon PC)

Afin d'éviter une double actualisation (si on change de race, il ne faut pas actualiser tant que le le chien n'est pas choisi) j'ai ajouté une cellule nommée et modifié le code VBA

12chiens5-pq.zip (320.36 Ko)

Bonsoir,

Je suis au regret de vous annoncer que cette méthode est beaucoup trop compliqué à mon niveau et que je suis certain d'avoir des difficultés si je devais réadapter le programme par la suite...

Fort heureusement, j'ai été en mesure de trouver une solution:

A l'aide d'une fonction RECHERCHEV, je suis en mesure d'extraire les dates désirées en ayant pour valeur recherchée la cellule "Nom" du TCD caché et pour tableau matrice le Tableau Recap.

Le seul inconvénient serait que je ne puisse pas nommer deux chiens par le même prénom... ou tout du moins pour l'instant jusqu'à ce que j'approfondisse mes connaissances

image

Cela semble fonctionner pour l'instant !

Merci pour votre aide 78chris

Rechercher des sujets similaires à "tcd afficher 1ere valeur"