Afin d'être clair : pour apprendre à programmer en VBA, il faut commencer par apprendre à programmer.
Trop de gens oublient que c'est un métier et qu'il faut des bases.
Pratiquer cette activité en amateur est largement possible, mais il n'empêche qu'il faut un minimum « vital ».
Connaître la syntaxe VBA n'apporte rien si on n'a aucune notion d'algorithmique, aucune culture sur la gestion des données (enregistrement, index, ODBC, quelques SGBD), aucune connaissance sur ce qu'est un événement windows, une fonction, des paramètres...
Se renseigner, même superficiellement, sur ces sujets permet d'appréhender avec plus d'efficacité la fabrication de modules de macros VBA.
Et je pars du principe qu'un pratiquant de VBA doit connaître parfaitement l'application qui sert de contexte à ses macros.
C'est souvent malheureusement loin d'être le cas ; j'ai souvent vu des débutants en VBA faire des macros plutôt que d'utiliser les fonctions de base de leur application, notamment sous Excel, sous utilisé.