Bonjour à tous,
j'ai développé il y a quelques temps un script VBA pour transformer des fichiers Excel reçus par un fournisseur et les rendre compréhensibles par un autre logiciel.
Brièvement, il s'agit de déplacer des colonnes, modifier les entêtes, reformater des données et sauvegarder le tout en csv.
Depuis peu le fournisseur a modifié le format de ses fichiers dont notamment l'ajout d'une colonne, inutile pour nous. Depuis que ces nouveaux fichiers sont transmis, le script plante systématiquement avec une erreur Subscript out of range. Lorsque je debug il m'amène sur une ligne incongrue.
Voici en substance où j'en suis de mes recherches, sachant que j'ai fait un certain nombre de tests pour comprendre mon problème, que la position du debugger a changé depuis, mais l'erreur reste la même :
L'exécution du code du haut conduit à l'erreur. Le debugger m'amène sur la ligne surlignée. Juste avant, le IF est passé sans encombre, donc on peut en déduire que nous avons bien 49 colonnes. Là je supprime simplement la colonne dont je n'ai pas besoin et boum! (d'ailleurs si j'observe le fichier, la colonne est bien supprimée...)
Dans le code du bas, j'ai modifié légèrement le IF pour qu'on rentre dedans avec un fichier ancienne version (qui a donc une colonne de moins), je continue de supprimer la colonne 49 malgré tout et là pas de plantage.
Si j'ouvre un fichier nouvelle version, que je fais Ctrl+A, Ctrl+C, Ctrl+V dans un nouveau fichier vierge et sauvegarde, le programme ne plante pas.
Je m'arrache les cheveux depuis plusieurs jours sur ce truc sans comprendre. J'ai envie de dire que les fichiers fournis sont pourris, mais comment le prouver, comment le gérer ?
Egalement j'ai tenté le On Error Resume Next, mais ça plante quand même !
Je fais appel à toutes les bonnes âmes qui voudront bien se pencher sur le sujet et reste à disposition pour répondre à toutes les questions.
Merci d'avance
Raph