XL 2010 Code de l'IA à corriger

cathodique

XLDnaute Barbatruc
Bonjour,

Dans l'une de mes discussions @dysorthographie m'a fait découvrir chatgpt.
Je l'ai testé et je peux dire qu'il répond juste à des questions assez simples. Un peu plus compliqué, nada..

J'ai suivi le conseil de notre ami @dysorthographie, en demandant juste un processus pour arriver à une solution.
C'est ce que j'ai fait mais au bout du compte le code proposé ne donne pas le résultat escompté.

J'ai demandé qu'à partir d'un array Tr, constitué de plusieurs linges et 10 colonnes;
Dont la 1ère colonne contient des années, la seconde des catégories et le restant des colonnes des chiffres;
de créer 3 tableaux T1, T2 et T3:
dans T1 faire le cumul par catégorie de chaque colonne (3 à 10)
dans T2 faire le cumul par catégorie de chaque colonne (3 à 10) pour l'année en cours
dans T3 faire le cumul par catégorie de chaque colonne (3 à 10) pour les années antérieures à l'année en cours

J'avoue que je n'ai pas su mettre des "debug" à toutes les étapes du code pour déceler se qui cloche.
Où se trouve la ou les erreurs dans le code ci-dessous, je précise code proposer par l'intelligence artificielle.
Je sollicite une aide humaine qui à son sens est bien plus intelligente que L'IA créée par l'humain.
En vous remerciant par avance
VB:
Option Explicit

Sub CreateTables()

   Dim Tr() As Variant
   Dim T1() As Variant
   Dim T2() As Variant
   Dim T3() As Variant

   Dim lastRow As Long
   Dim currentYear As Long
   Dim category As Variant
   Dim i As Long, j As Long
   Dim catIndex As Long
   Dim categoryDict As Object
   Dim totalDict As Object

   ' Initialisation des données (remplacez ceci par vos données réelles)
   lastRow = 10   ' Changez ceci en fonction de votre dernière ligne réelle
   ReDim Tr(1 To lastRow, 1 To 10)

   ' Remplissage d'exemple
   Tr(1, 1) = 2021: Tr(1, 2) = "A": Tr(1, 3) = 100: Tr(1, 4) = 200: Tr(1, 5) = 300: Tr(1, 6) = 400: Tr(1, 7) = 500: Tr(1, 8) = 600: Tr(1, 9) = 700: Tr(1, 10) = 800
   Tr(2, 1) = 2022: Tr(2, 2) = "B": Tr(2, 3) = 150: Tr(2, 4) = 250: Tr(2, 5) = 350: Tr(2, 6) = 450: Tr(2, 7) = 550: Tr(2, 8) = 650: Tr(2, 9) = 750: Tr(2, 10) = 850
   Tr(3, 1) = 2021: Tr(3, 2) = "A": Tr(3, 3) = 200: Tr(3, 4) = 300: Tr(3, 5) = 400: Tr(3, 6) = 500: Tr(3, 7) = 600: Tr(3, 8) = 700: Tr(3, 9) = 800: Tr(3, 10) = 900
   Tr(4, 1) = 2023: Tr(4, 2) = "C": Tr(4, 3) = 200: Tr(4, 4) = 300: Tr(4, 5) = 400: Tr(4, 6) = 500: Tr(4, 7) = 600: Tr(4, 8) = 700: Tr(4, 9) = 800: Tr(4, 10) = 900
   Tr(5, 1) = 2022: Tr(5, 2) = "A": Tr(5, 3) = 50: Tr(5, 4) = 70: Tr(5, 5) = 90: Tr(5, 6) = 110: Tr(5, 7) = 130: Tr(5, 8) = 150: Tr(5, 9) = 170: Tr(5, 10) = 190

   ' Récupérer l'année en cours
   currentYear = Year(Date)

   ' Initialiser les dictionnaires pour les totaux
   Set categoryDict = CreateObject("Scripting.Dictionary")
   Set totalDict = CreateObject("Scripting.Dictionary")

   ' Remplir les dictionnaires avec les totaux
   For i = 1 To UBound(Tr, 1)
      category = Tr(i, 2)

      ' Totaliser pour T1
      If Not categoryDict.Exists(category) Then
         categoryDict.Add category, Array(0, 0)   ' (Total T1, Total T2)
      End If

      For j = 3 To 10
         categoryDict(category)(0) = categoryDict(category)(0) + Tr(i, j)   ' calcul du total T1
      Next j

      ' Totaliser pour T2 si c'est l'année en cours
      If Tr(i, 1) = currentYear Then
         For j = 3 To 10
            categoryDict(category)(1) = categoryDict(category)(1) + Tr(i, j)   ' calcul du total T2
         Next j
      End If

      ' Totaliser pour T3 (années antérieures)
      If Tr(i, 1) < currentYear Then
         If Not totalDict.Exists(category) Then
            totalDict.Add category, 0   ' Initialiser à 0 pour T3
         End If
         For j = 3 To 10
            totalDict(category) = totalDict(category) + Tr(i, j)   ' calcul du total T3
         Next j
      End If
   Next i

   ' Dimensionner T1, T2 et T3 selon le nombre de catégories
   Dim catCount As Long
   catCount = categoryDict.count

   ReDim T1(1 To catCount, 1 To 10)   ' Dimensionner T1
   ReDim T2(1 To catCount, 1 To 10)   ' Dimensionner T2
   ReDim T3(1 To catCount, 1 To 10)   ' Dimensionner T3

   ' Remplir T1 et T2
   catIndex = 1
   For Each category In categoryDict.Keys
      T1(catIndex, 1) = category   ' Colonne 1 : Catégorie
      T1(catIndex, 2) = categoryDict(category)(0)   ' Colonne 2 : Total T1

      T2(catIndex, 1) = category   ' Colonne 1 : Catégorie
      T2(catIndex, 2) = categoryDict(category)(1)   ' Colonne 2 : Total T2

       Remplir les colonnes 3 à 10 avec 0
      For j = 3 To 10
         T1(catIndex, j) = 0   ' Initialisation des colonnes à 0
         T2(catIndex, j) = 0
      Next j

      catIndex = catIndex + 1
   Next category

   ' Remplir T3
   catIndex = 1
   For Each category In totalDict.Keys
      T3(catIndex, 1) = category   ' Colonne 1 : Catégorie
      T3(catIndex, 2) = totalDict(category)   ' Total T3 pour la catégorie

      ' Remplir les colonnes 3 à 10 avec 0
      For j = 3 To 10
         T3(catIndex, j) = 0   ' Initialisation des colonnes à 0
      Next j

      catIndex = catIndex + 1
   Next category

   ' Afficher les résultats dans la fenêtre de débogage
   Debug.Print "Résultats de T1 :"
   For i = 1 To UBound(T1, 1)
      For j = 1 To 10
         Debug.Print T1(i, j);
      Next j
      Debug.Print   ' Nouvelle ligne pour chaque catégorie
   Next i

   Debug.Print "Résultats de T2 :"
   For i = 1 To UBound(T2, 1)
      For j = 1 To 10
         Debug.Print T2(i, j);
      Next j
      Debug.Print   ' Nouvelle ligne pour chaque catégorie
   Next i

   Debug.Print "Résultats de T3 :"
   For i = 1 To UBound(T3, 1)
      For j = 1 To 10
         Debug.Print T3(i, j);
      Next j
      Debug.Print   ' Nouvelle ligne pour chaque catégorie
   Next i

End Sub
 

patricktoulon

XLDnaute Barbatruc
RE
et bien si tu prend le temps de regarder la vidéo ou j'explique doucement les étapes tu verra que tu n'a pas besoins d'une usine a gaz
faire confiance a chatGPT par trouille de faire des betises ne t'aidera pas
je le dis haut et fort le code de chatGPT c'est de la daube
mais que les choses soient claires c'est pas chatGPT qui est à remettre en cause
c'est le demandeur qui n'a éventuellement pas su s'expliquer sachant que pour chatGPT 1 c'est 1 et 0 c'est 0

mon code est très simple et je l'ai ventilé pour plus de clarté
et d'une rapidité en plus que tu n'aura pas avec 1/2 ou même dico et des tours de passe passe
parfois revenir à l'essentiel a du bon
 

cathodique

XLDnaute Barbatruc
RE
et bien si tu prend le temps de regarder la vidéo ou j'explique doucement les étapes tu verra que tu n'a pas besoins d'une usine a gaz
faire confiance a chatGPT par trouille de faire des betises ne t'aidera pas
je le dis haut et fort le code de chatGPT c'est de la daube
mais que les choses soient claires c'est pas chatGPT qui est à remettre en cause
c'est le demandeur qui n'a éventuellement pas su s'expliquer sachant que pour chatGPT 1 c'est 1 et 0 c'est 0

mon code est très simple et je l'ai ventilé pour plus de clarté
et d'une rapidité en plus que tu n'aura pas avec 1/2 ou même dico et des tours de passe passe
parfois revenir à l'essentiel a du bon
Merci. En fait, le ne connaissais même pas ChatGpt. C'est @dysorthographie qui en avait parlé dans une de mes discussions.
J'ai en effet testé ce chatgpt, et gpt un câble. Pour des questions simples oui. Sinon, j'ai maintenant j'ai mon idée.
Comme expliqué plus haut, cette discussion était un prélude à plus compliqué.
Pourrais-tu consulter le code de cette discussion et me donner ton avis.
Je te donnerai avec plaisir plus de précision sur les tenants et aboutissants de ce petit projet.

Merci
 

patricktoulon

XLDnaute Barbatruc
bon j'ai regardé ton autre discussion et j'ai pris le fichier de Robert pour regarder la structure

donc tu veux

1° le résultat de compil pourr année n/n-1,all sans doublons dans feuil3

2° état des animaux fin 2023+etat de l'activité 2024+etat fin2024 en feuil4

3°état par année dans feuil"resultat par année"

pour le 1et 2 on pourrait reprendre mon idée

et pour le 3 a peu près pareil

mais je vais laisser robert te finaliser ça avec les requêtes

je ferais ma propo avec ma méthode après

il n'y a rien de bien compliqué la dedans

je le redis de la ref et de l'indexation
 

Discussions similaires

Réponses
3
Affichages
203
Réponses
4
Affichages
362

Statistiques des forums

Discussions
314 216
Messages
2 107 389
Membres
109 821
dernier inscrit
tristan28