Aide pour consolider un fichier

philippe12

XLDnaute Nouveau
Bonjour je sollicite votre aide pour réaliser des opérations automatiques sur le fichier joint j'ai essayé en matricielle mais celui-ci bloque au bout d'un moment il y a beaucoup trop de lignes dans le ficher d'origine .Aussi je me retourne vers vous pour savoir si quelqu'un pouvait se pencher sur un code en vba.

je souhaites consolider un référentiel avec de nouvelles valeurs et recontrôler ce référentiel car les opérations de mise à jour s'effectuent manuellement.

il existe plusieurs références produits et de cal et calb.

dans le 1er onglet : j' ai donc ma table de référence 'table source'
2ème onglet 'mise à jour source' les nouvelles valeurs à insérer en fonction de date.
3ème onglet'attendu table source' la consolidation du fichier en fonction des paramètres produit, cal et calb de et de la nouvelle date et par recopie des valeurs de la table source.
le 04 onglet c'est une mise à jour manuel de cette table ou il peut y avoir une erreur de frappe.(Je crée une erreur ligne 09).
le 05 eme onglet doit me déterminer ou se situe l'erreur par rapport au 03 ème onglet 'attendu table source' (ligne en bleu)

il y a beaucoup de chose et j'espère que mes explications suffiront et encore merci pour votre aide.
 

Pièces jointes

  • mise à jour onglet.xlsx
    38.8 KB · Affichages: 25

sousou

XLDnaute Barbatruc
Bonjour
Pas bien tout compris
1/La mise à jour de la table source se fait à partir de la table mise a jour ?
Pourquoi en fonction des dates?
Comment faire une mise à jour si tous les champs (feuil mise a jour ) ne sont pas remplis?
2/ le controle de la mise à jour manuelle se fait en fonction du résultat obtenu sur la mise à jour?
 

philippe12

XLDnaute Nouveau
merci Gosselien c'est mon premier jet.

la référence produit est une combinaison de la colonne produit(col d) de cal(col e) et calb (col g)
dans le 2ème onglet j'ai 1a001 (col d) ;01(col e); 02 (col g) le nouveau tx 32 col (g) et la nouvelle date (col z)
c'est ma nouvelle mise à jour.

01 02 03 1a001 01 32 02 31/12/9999 01/01/2017

pour le 03 onglet 'attendu table source' il y aura une mise à jour de ce produit par rapport à table source.

ma nouvelle date de référence est au 01/01/2017.par rapport à 'table source'
01 02 03 1a001 01 31 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/9999 01/12/2015 0

je dois donc avoir une clôture de ma date a la place du 31/12/9999 je dois trouver 31/12/2016.

la nouvelle ligne de référence s'inscrit avec tous les attributs des col h à x avec la nouvelle valeur '32' col (f)
01 02 03 1a001 01 31 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/2016 01/12/2015 0
01 02 03 1a001 01 32 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/9999 01/01/2017 0
 

philippe12

XLDnaute Nouveau
Bonjour
Pas bien tout compris
1/La mise à jour de la table source se fait à partir de la table mise a jour ?
Pourquoi en fonction des dates? je dois garder l'historique
Comment faire une mise à jour si tous les champs (feuil mise a jour ) ne sont pas remplis?
les valeurs de la table source de la col h à x ne sont pas inscrite lors de la réception il doit donc y avoir une recopie par rapport à table source.
2/ le controle de la mise à jour manuelle se fait en fonction du résultat obtenu sur la mise à jour?
tout à fait par rapport à l'attendu table source en comparant l'onglet manuel.
 

philippe12

XLDnaute Nouveau
table source est je dirais l' ancienne table de référence. on reçoit la "mise à jour source" incomplète" puisque nous avons pas les colonnes de h à x elles sont vides et avec table source et la mise à jour source on crée l'attendu table source en la consolidant.en modifiant l'ancienne donnée de table source(31/12/9999) par 31/12/2016 et la nouvelle ligne de mise à jour source.
et en recopiant les valeurs des col h à x de table source puisque dans mise à jour source elles sont vides.
les données de mise à jour ne seront jamais contenu dans table source.

au final l'attendu table source deviendra la nouvelle table source.
 
Dernière édition:

philippe12

XLDnaute Nouveau
Bonjour Sousou,

Prends les données table source +mise à jour source tu les colles dans un onglet tu fais un tri 4 critères sur produit ;cal calb et tx.(croissant de A à Z)

tu te retrouves avec ça :

01 02 03 1a001 01 31 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/9999 01/12/2015 0
01 02 03 1a001 01 32 02____________________________________________ 31/12/9999 01/01/2017 0

je que je souhaite c'est que pour la première ligne la date de fin (31/12/9999) se transforme en (31/12/2016)
car le nouveau tx pour ce produit est 32 à la date déb 01/01/2017.(c'est dat déb -1)

01 02 03 1a001 01 31 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/2016 01/12/2015 0
01 02 03 1a001 01 32 02____________________________________________ 31/12/9999 01/01/2017 0

et ensuite recopier les colonnes de H à X de cette ligne pour consolider cette 02 ème ligne avec le nx tx 32 :

01 02 03 1a001 01 31 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/2016 01/12/2015 0
01 02 03 1a001 01 32 02 00 00 00 00 00 00 24 03 24 03 00 00 00 00 31/12/9999 01/01/2017 0

et pour le 1a001 02 11 03 même opération.

cet onglet sera le même que l'attendu source.
 
Dernière édition:

philippe12

XLDnaute Nouveau
Re bonjour
Si je commence à comprendre?,
Si la pièce, c'est bien les 5 premières colonnes
voilà la première partie macro miseajour
à vérifier

parfait Sousou le code fonctionne bien.
pour la comparaison entre les onglets manuel et table source dans l'onglet erreur rencontrée, si on ne peut pas mettre de couleur je pensais rajouter en colonne A le nom de l'onglet mais garder la couleur ou se situe l'erreur.
j'en ai profité pour faire le ménage dans le fichier.
 

Pièces jointes

  • Copie de mise à jour onglet.xlsm
    42.7 KB · Affichages: 21
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088