Déjà l’indigestion de ChatGPT 5 ?
Pas encore ? Alors voici une petite approche sur VBA, pour comparer avec ChatGPT 4o.
C’est un problème complexe, avec deux subtilités assez difficiles à résoudre.
Résultat non détaillé
ChatGPT 5 et ChatGPT 5 Thinking ont fourni un meilleur résultat que 4o, mais les trois se sont plantés sur la deuxième subtilité. Subtilité importante car le code plante. Après indication de l'erreur, les trois modèles ont résolu le problème.
Résultat détaillé
Voir ici pour une description plus complète de ce que je veux faire :
- ChatGPT 4o n’a pas modifié une partie du code qui aurait dû être logiquement modifiée (la suppression du renommage de l’objet graphique), ce que les deux versions 5 et 5 Thinking ont fait. C’est très bien, et en plus, cela m’a permis d’approfondir une subtilité du VBA.
- La deuxième subtilité est difficile à trouver, même pour un "expert" (c’est-à-dire quelqu’un qui s’est pris la tête dessus pendant des heures). L’IA a pensé que `App_NewChart` existait, alors qu’il faut utiliser `App_WorkbookNewChart`. Les trois versions de ChatGPT se sont trompées dessus (4o, 5 et 5 Thinking). Ce qui est intéressant avec ce cas, c’est qu’en théorie, l’IA aurait pu avoir raison, mais c’est un événement qui ne semble pas exister dans Excel-VBA au niveau du module de classe… et qu’il aurait pourtant été très utile d’avoir. Une sorte d’« hallucination logique ». J’ai arrêté de creuser le sujet ; il est donc possible que ma propre expertise soit en défaut, mais au moins le code fonctionne.
Voir ici :
https://lnkd.in/gbRDRiZJ
J’ai bien aimé que la version 5 Thinking m’ait signalé une faute de frappe sur *XLMA*, mais les trois ont bien compris ce que je voulais.
Prompt complet ci-dessous. N'hésitez-pas à partager vos trouvailles avec le même prompt.
PS : à la sauce Microsoft, impossible d’accéder aux anciens modèles dans le prompt de chatgpt. Très intelligent pour forcer rapidement la collecte de données…
Voici le prompt :
Option Explicit
Public WithEvents App As Application
' Fires when a new chart is created (application scope).
Private Sub App_NewChart(ByVal Ch As Chart)
HandleNewChart Ch
End Sub
' Some Excel versions expose this event; if present, it will also fire.
Private Sub App_WorkbookNewChart(ByVal Wb As Workbook, ByVal Ch As Chart)
HandleNewChart Ch
End Sub
Private Sub HandleNewChart(ByVal Ch As Chart)
On Error Resume Next
' Only act on embedded charts (ChartObject) — not chart sheets.
If TypeName(Ch.Parent) = "ChartObject" Then
Dim co As ChartObject
Set co = Ch.Parent
' Make the chart movable (free on the sheet).
co.Placement = xlMove
' TODO: set any other default properties here if you want.
' e.g., co.Width = 400: co.Height = 300
End If
On Error GoTo 0
End Sub