hello, si j'ai bien compris ton fichier .xlsx ou .xls sert en fait d'interface pour mettre à jour ton ERP. C'est bien cela ?
La génération automatique du fichier d'interface au format Excel poserait problème. C'est bien cela ?
Un fichier d'interface .csv pourrait être l'alternative à condition que ce type soit admis (ça resterait à confirmer). C'est bien cela aussi ?
Pourquoi ces questions : j'essaie de recentrer l'entrée, la sortie et le besoin.
Alors solution peut-être simpliste mais qui t'enlèverait l'épine du pied consistant à passer par de l'ADO (maj fichier fermé) : générer le fichier .csv
Pour cela, étudier la structure d'enregistrement attendue avec ce type de format et ton fichier où si se situe ta Macro génère ce fichier. Ensuite passer certainement par les process automatiques de ton ERP pour y injecter ce .csv.
La génération de ce .csv passe les mécanismes de gestion de fichiers texte en VBA.
SI tu n'es pas à l'aise avec cela voici le package d'instructions à utiliser
Open OPEN_NOM_DE_FICHIER.csv For Output As 1
(As 1 = N° de canal qui peut être obtenu automatiquement par l'instruction FreeFile --> conseillé)
Print #1 (n° de canal), ENREGISTREMENT
ENREGISTREMENT : contient les données séparées par un ";"
Attention voir si l'ERP réclame un en-tête (titre colonne)
Close #N° de canal
mais tu peux faire Close sans N° de canal
Avant tout open, il est recommandé de faire un Close qui ferme tous les fichiers qui pourraient être encore ouvert.... conseil à faire si tu plantes avec les fichiers ouverts....
Print #Canal, DONNEES;
Le ";" évite le retour à la ligne (donc pas de CR/LF ou dit autrement x0Dx0A) (chr(13)&chr(10) pour être complet
Print #1, data1;
Print #1, data2;
Print #1, data3;
Print #1, data4
==> à l'issue de data4 tu auras là le x0DxOA
voilà tu as le détail peut-être d'une solution plus simple.