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
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