synchroniser mon tableau avec un fichier que je reçois

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sheldor

XLDnaute Occasionnel
Supporter XLD
bonjour à tous,

j'ai un fichier de travail ("mon_fichier_de_travail") avec une table qui contient des prix, les données viennent d'un logiciel de compta qui exporte en .xls

pour mettre à jour ma table je refais un export depuis le logiciel de compta j'obtiens: "fichier_a_importer"

dans "fichier_a_importer" je peux avoir des lignes en plus (en vert), des lignes en moins et des différences de prix (en vert aussi)

(le tableau réel fait quelques milliers de lignes sur 50 colonnes)

je souhaite importer ces données dans "mon_fichier_de_travail" sachant que:

- si le prix diffère je prendrais toujours celui du fichier à importer car plus récent
- je ne veux pas importer l'ensemble car ça ferait plein de doublons
- s'il manque des lignes dans "fichier_a_importer" par rapport à la fois précédente je veux les conserver dans mon_fichier_de_travail
- je souhaite ajouter les lignes qui apparaissent comme nouvelle dans fichier_a_importer

ma question est la suivante: comment feriez-vous?

je peux écrire une macro "brutus" qui compare toutes les cellules et décide de quoi faire mais je serais ici très preneur d'un conseil pour m'aiguiller vers une piste plus élégante (pour apprendre des choses nouvelles...)

très grand merci par avance
nico
 

Pièces jointes

Bonjour.
Je le ferais en VBA à l'aide de la fonction Gigogne et de la fonction TableUnique.
Elles sont disponible dans le complément à installer et mettre en référence du projet d'application, mais on peut aussi installer les modules de service dans celui-ci.
 

Pièces jointes

Remarque: dans votre classeur de test de travail, la macro de mise à jour telle que vous la décrivez se résumerait alors à ça :
VB:
Sub MiseÀJour()
Dim TR(1 To 10000, 1 To 3), Code As SsGr, Produit As SsGr, L As Long
For Each Code In Gigogne(TableUnique(Feuil1.[A2], _
   Workbooks("fichier_a_importer.xlsx").Worksheets(1).[A2]), 1, 2)
   For Each Produit In Code.Co
      L = L + 1
      TR(L, 1) = Code.Id
      TR(L, 2) = Produit.Id
      TR(L, 3) = Produit.Co(Produit.Count)(3)
      Next Produit, Code
Feuil1.[A2].Resize(L, 3).Value = TR
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour