XL 2010 Comptage Complexe

cathodique

XLDnaute Barbatruc
Bonjour,
Depuis une petite BD (qui s'allongera au fil du temps), je voudrais via un formulaire faire un comptage global ou par année suivant un choix dans la combobox.

Je voudrai faire un comptage dans l'ordre suivant par Espèce, par Cat. (catégorie) et par caractère. et aussi compter le nombre de décès par année (colonne F contient la date de décès).

Attention, pour caractere, ils sont en doublons car chaque NoDossier peut changer de cat. au fil du temps.

Pour info, un NoDossier n'a jamais de catégorie "Cd" en doublon. Ce qui n'est pas le cas de autres Catégories.

Je ne sais pas si j'ai bien expliqué mon objectif. En feuille Recap, j'ai mis les différents résultats escomptés.

J'ai commencé comme ci-dessous mais je me suis emmêlé les pinceaux.

VB:
Option Explicit
Dim tb
Dim Dico As Object

Sub essai1()
   Dim i As Long, d As Object, L As Byte
   Dim année
   Set d = CreateObject("scripting.dictionary")

   tb = [Table].Value
   année = 2024 ' sera remplacé par la combobox

   For i = 1 To UBound(tb)
      d(tb(i, 4)) = "" 'récupère nb espèce sans doublon
   Next i

   Dim Tr() 'debut tableau resultat
   For i = 0 To d.Count - 1
      ReDim Preserve Tr(1 To d.Count, 1 To 10)
      Tr(i + 1, 1) = année
      Tr(i + 1, 2) = d.keys()(i)
   Next i

   For i = 1 To UBound(tb)
      If Year(tb(i, 1)) = année Then
'je me noie ici

      End If
   Next i
End Sub

J'ai voulu adapter les exemples (de ma précédente discussion )de @patricktoulon , de @laurent950 ou de @dysorthographie (la plus complexe pour moi car jamais utilisé ADO).
Je voudrai en gros obtenir le modèle d'array en feuille Recap pour alimenter la listbox.

En vous remerciant par avance.
 

Pièces jointes

  • Comptage - Copie.xlsm
    44.3 KB · Affichages: 21

dysorthographie

XLDnaute Accro
Bonjour,
Dans le classeur que j'ai uploadé plus haut il y a y le bouton filtre qui affiche un filtre dynamique.

Dans la liste de champ tu sélectionnes date

Dans la liste de opérateur tu choisis like

Dans valeur tu écris 2024 si c'est l'année 2024 qui t'intéresse.

La dernière liste te permet d'ajouter une condition au filtre en sélectionnant AND si tu veux que l deuxième critère soit lié au premier ou OR si tu veux les dissocier.

Quand tu valides ça affiche le résultat si la solution que tu as choisi est base sur des requêtes SQL ce que je doute.

PS si j'utilise Chatgpt pour documenter mon code c'est parce que Chatgpt fourni un code qui fonctionne mais foilli, li ne te permet pas de réutiliser des fragments de code pour d'autres applications.

J'ai travaillé 20 en SSII et ma force de frappe était c'est centaine de petites fonctionne personnalisé que j'avais accumulé dans ma carrière.

Notes également que même moi qui suis un développeur de métier, pas un autodidacte,je n'arrive pas toujours à comprendre le code développé par Chatgpt.
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Bonjour,
Dans le classeur que j'ai uploadé plus haut il y a y le bouton filtre qui affiche un filtre dynamique. Dans lasiste de champ tu sélectionnes date, dans la liste de opérateur tu choisis like et en valeur tu écris 2024 si c'est l'année 2024 qui t'intéresse. La dernière liste te permet d'ajouter une condition au filtre en sélectionnant AND si tu veux que l deuxième critère soit lié au premier ou OR si tu veux les dissocier.

Quand tu valides ça affiche le résultat si la solution que tu as choisi est base sur des requêtes SQL ce que je doute.

PS si j'utilise Chatgpt pour documenter mon code c'est parce que Chatgpt fourni un code qui fonctionne mais foilli, li ne te permet pas de réutiliser des fragments de code pour d'autres applications.

J'ai travaillé 20 en SSII et me force de frappe était c'est centaine de petites fonctionne personnalisé que j'avais accumulé dans ma carrière.

Notes également que même moi qui suis un développeur de métier, pas un autodidacte,je n'arrive pas toujours à comprendre le code développé par Chatgpt.
Bonjour,

En fait, je n'ai encore codé pour ce que j'ai expliqué plus haut.
Je t'avoue qu'avec mon niveau, ce que tu as fait en sql (tous les codes que tu joins) est encore très flou dans ma petite tête.
Tu m'as montré comment extraire des données en sql à partir de mon tableau. mais j'ai vu que par exemple la date de décès survenue en 2024, mais enregistrée sur la ligne de l'animal concerné, enregistré en 2020. En sql, ce n'était pas possible.

Merci pour tes suggestions que je prends en compte pour la suite de mon petit projet.
Encore merci, bon après-midi.
 

cathodique

XLDnaute Barbatruc
En c'est peut être en SQL que ce sera le plus facile.
je voudrais l'apprendre ce SQL surtout si tu m'affirmes que c'est plus facile.

Tu veux travailler sur l'année de création du dossier ou juste pour les décès ?
Il faut juste préciser first(date)
En fait, je crois que je me suis encore une fois mal expliqué.

Je travaille sur une partie d'une bd, le tableau de mon fichier est obtenu via un formulaire.
la date de décès est enregistrée via un formulaire, elle est enregistrée dans la colonne 6 sur la même ligne que le numéro de dossier de l'animal où il y a en colonne 1 la date de création ou autre évènement.

Je comptabilise tout par rapport à l'année de création, sauf pour un décès il doit être rattaché au tableau récapitulatif sur la même ligne Année et Espèce (c-à-d 2024 - chat).

Le seul décès survenu est un chat en 2024. Ce chat a été enregistré en 2020 (il y a 2 date identiques, une lors de son enregistrement et la même date lors de sa remise à une famille d'accueil). Comme il est décédé en 2024, cela doit figurer sur le tableau 2024 et non pas en 2020.

je ne sais si c'est plus clair.

C'est que je suis parvenu à faire à ma façon. Peut-être,ne respectant pas les bonnes règles de programmation mais les résultats sont bons.

Merci beaucoup pour ton implication.
 
Dernière édition:

dysorthographie

XLDnaute Accro
Regarde le code de Patrick, que je salue et pour qui j'avais de l'affection, il est très bien ficelé mais j'ai garde le nombre de lignes utiliser pour faire la même chose que moi. Il affirme en plus que tu ne peux pas filtre sur une année,un chien, un chat, un cochon d'Inde.

Moi je peux appliquer un filtre multi critères.

Plus facile si c'est moi qui le dit la belle affaire je suis pas le premier venu sur le sujet.

Il est évident qu'il faut que tu muscles t'on vocabulaire si tu veux te sentir à l'aise.

Tu veux faire marcher les dates avec le dossier ou seulement pour les décès ?
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Tu veux faire marcher les dates avec le dossier ou seulement pour les décès ?
Apparemment, ce que j'ai expliqué plus haut n'a pas servi à me faire comprendre.

Je ne voudrais pas abuser de ton temps.

J'ai fait un code qui répond à mes attentes.

Regarde le code de Patrick,
C'est ce que j'ai fait en tout premier lieu. Il est surement bien ficelé mais je suis pas parvenu à mes fins avec son code. Pour des expérimentés, c'est très facile de jongler.

Je te remercie. Bonne soirée.
 

dysorthographie

XLDnaute Accro
J'ai fait un code qui répond à mes attentes.
Ne t'inquiètes pas ça fonctionne et c'est bien ce qui compte.

Nous sommes intervenus pour t'aider à réussir ce que tu voulais faire et rien que ce que tu souhaites faire.

Je ne serai jamais désappointé si un solution que je propose n'est pas retenu par le demandeur et dans ce cas c'est toi.

Je me consolerai quand même en me disant que je t'ai fourni la piste de Chatgpt.
 

cathodique

XLDnaute Barbatruc
Je me consolerai quand même en me disant que je t'ai fourni la piste de Chatgpt.
Tout compte fait, et d'après ma petite expérience sur Chatgpt.
Chatgpt donne une bonne solution pour des questions assez simple.
Sinon, comme tu l'as mentionné pour le code, il faut compter sur soit même (comme toi, en ta qualité de pro) et sur mes maigres connaissances et l'aide du forum.
Je viens de passer environ 1 h, sur chatgpt pour faire défiler une listbox vers le haut pour rendre des lignes sélectionnées par code, de façon à les rendre visibles. Très déçu, je vais faire mes recherches sur Mon bon vieux XLD.

Bonne soirée, Au plaisir de te lire
 

dysorthographie

XLDnaute Accro
Sur Chatgpt il faut lui poser les questions en lui précisant que tu ne veux pas de code mais un raisonnement.

Si la trame qu'il te propose te convient demande lui de résoudre le code de chaque élément de son analyse.

Le premier code ne sera pas idéal dis lui que tu veux factoriser le code avec des passage de paramètres

Sinon ajuste ta question sur Les points de désaccord.
 

cathodique

XLDnaute Barbatruc
Sur Chatgpt il faut lui poser les questions en lui précisant que tu ne veux pas de code mais un raisonnement.

Si la trame qu'il te propose te convient demande lui de résoudre le code de chaque élément de son analyse.

Le premier code ne sera pas idéal dis lui que tu veux factoriser le code avec des passage de paramètres

Sinon ajuste ta question sur Les points de désaccord.
Bonjour,

Merci pour tes conseils. Comme c'est la première fois. Je m'y suis peut-être mal pris.

Cependant, j'ai trouvé toutes une collection de site chatgpt. Lequel me conseilles-tu?

Merci beaucoup pour ton partage.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
314 720
Messages
2 112 187
Membres
111 457
dernier inscrit
anglade