VBA - reconciliation - boucle selon 2 conditions

XCo

XLDnaute Occasionnel
Bonjour

Je suis XCo (bon avant c`etait XC mais je peux plus c`est trop court comme nom :confused: alors c`est XCo)

Je suis ds la... bref c`est dur a faire

Je reconcilie des donnees (3 sources et je dois comparer ligne par ligne sles donnes de 3 sources sachant que je prends en compte date et quantite (mais date avec une fourchette de +/- 4 jours car selon les sources on a pas la meme date - c`est dommage ca)

Bref j`ai presente ds le fichier attache ce que je cherche a faire (enfin la c`set plutot qu`avec votre aide car je sais meme pas si c`est possible de faire ce que je veux).
Par excel c`est impossible je pense - sauf si un genie d`excel existe (Jean Marie !! Monique!! )

Bref j`ai essaye de bien expliquer car c`est complexe.

Merci pour votre aide. Si quelqu`un a une solution mieux que ce que je propose pour faire l`exercice, je suis preneur

Vous allez voir c`est marrant a mourir:eek:

Merci en tout cas pour votre aide eventuelle. En tout cas a+ si vous ceratins ont des questions sinon c`est bon WE a tous.

XCo
 

Pièces jointes

  • Macro.zip
    8.7 KB · Affichages: 47
  • Macro.zip
    8.7 KB · Affichages: 49
  • Macro.zip
    8.7 KB · Affichages: 46

Gorfael

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

Salut XCo (ou XC)

petites précisions nécessaires

- S1 (source 1) est source référence
la fourchette de dates pour S2 comme pour S3 est de
(S1.A-4j) à (S1.A+4j) :
ex : S1.A = 01/06/06 / S2.E = 04/06/06 (S1+3j)
S3.A=06/06/06 ne sera pas pris (S1+5j) bien que (S2+2j)


- Si 2 plages dates/Quantités se recoupent (dete +/- 4 j) c'est la date la plus faible (traitée en 1er) qui aura la priorité à Qté identique
S1 = 01/06/06 aura S2 = 02/06/06 et S3 = 05/06/06 bien que il existe
S1 = 05/06/06 qui n'aura rien

Si ce n'est pas bon, il convient de déterminer la règle à appliquer, en tenant compte de l'alourdissement du traitement (déterminer si la date/quantité suivante-4j et dans la forchette Date/quantité +4j, dans ce cas voir s'il existe un/plusieurs enregistrements S2/S3 se situant dans cette zone et les attribuer à l'un où l'autre)

Ce que je pense faire avec la macro :
- Trier S1 par B et C
- Trier S2 par E et C
- Trier S3 par A et B

déterminer la plage de travail sur S1 sur A
déterminer la plage de travail de S2 sur E
déterminer la plage de travail de S3 sur A
pour accélérer la macro

S1 :
pour chaque ligne de A
Copier la ligne sur résultat Lig_Result_S1
mettre un X en K
déterminer la fourchette de dates

S2 :
Lig_Result_S2 = Lig_Result_S1
Pour toutes lignes de E dans la fourchette date S1
Vérifier C = S1.B et K<>X
si oui copier A à E sur résultat (à partir de E) Lig_Result_S2
mettre un X en K
Lig_Result_S2= Lig_Result_S2+1

S3 !
Lig_Result_S3 = Lig_Result_S1
Pour toutes les lignes de A dans la fourchette date S1
Vérifier B = S1.B et K<>X
si oui copier A à C sur résultat (à partir de G) Lig_Result_S3
Mettre X en K
Lig_Result_S3 = Lig_Result_S3 + 1

Lig_Result_S1 = max(Lig_Result_S1,Lig_Result_S2,Lig_Result_S3) + 1

Pour le reste, il suffira de faire un filtre automatique sur colonne A à K des feuille source et de filtrer <> "X"

A+
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

bonjour Cxo,Gorfael
1,extraire et repérer les égalités sur n°,date,quantité
redimensionner tableau source1 en excluant les égalités
2,extraire et repérer dernier mois
redimensionner tableau source1 en excluant le dernier
après pas bien compris demande explication,en attendant je vais essayer d'appliquer le raisonnement de Gorfael
à bientôt
 

Pièces jointes

  • Macrocxo.zip
    19.9 KB · Affichages: 41
  • Macrocxo.zip
    19.9 KB · Affichages: 40
  • Macrocxo.zip
    19.9 KB · Affichages: 38

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Bonsoir Gorfael et Bebere

Merci pour votre aide

1/ Bebere

Bebere, ta macro ne reporte pas toutes les donnes de la source 2 je veux dire par la que pour 1 ligne de la source 1, tu as 2 ou jusqu`a 5 lignes ds la source 5 donc au final quand tu colles une deuxieme valeur de la source 1, il faut qu`elle se reporte ds la derniere ligne sans valeur
Bref tu auras des trous sur les colonnes A/B/C et bcp + de lignes pour les donnees de la source 2
Ca pour la ligne vide, tu as bien le suivant donc c`est bon
Par contre si je lance ta macro, il y a des lignes qui se repetent (Valeur 540 par exemple)
Et est ce possible d`effacer les valeurs ds les feuilles sources 1/2/3 lorsqu`elle ont ete reportees car je pense que tout ne peut etre reportable par macro donc si je dois finir a la main autant savoir lesquelles choisir

Merci en tout cas pour ce bon debut!!


2/ Gorfael

pour ton point 1 tout a fait, tu compares la source 3 (J+/- 4) a la source 1 donc si ds source 3 tu as 06/06/06, ben ca sera pas pris

Point 2 : note que c`est ds la colonne B que sont les dates (sinn c`est bon)

Pour le reste ca semble bon (et si possible effacer les lignes reportees)
et penser a reporter la source 1 sur la derniere ligne sans data donc ne pas fairem juste (A365 X1 up)

J`espere avoir ete clair. Vraiment merci a tous les 2

XCo
 

Bebere

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

rebonsoir
dans feuil1 tu as les égalités source1 source2(repéré dans source1 et 2 voir rmq)

après premier suivant tu as source1 dernier mois(repéré dans source1 voir rmq)
rmq est une colonne ajoutée dans source1 et 2

chaque fois les tableaux sont réinitialisés et triés pour la suite

demain continue sur 3ème partie dont tu parles
bone soirée à tous deux
 

Pièces jointes

  • Macrocxo.zip
    24.4 KB · Affichages: 41
  • Macrocxo.zip
    24.4 KB · Affichages: 38
  • Macrocxo.zip
    24.4 KB · Affichages: 43

Gorfael

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

Salut à tous
normalement, la macro marche
il n'y a plus qu'à tester
soit en la lançant (pas trop loin), soit en mode Pas-à-Pas pour regarder ce qu'elle fait
3 parties :
- un tri des sources sur la date (j'aurais peut-être du travailler avec la quantité en donnée principale, mais j'étais parti sur la date alors...

- une recopie des ligness à partir des valeurs de S1 avec marquage des données

- une suppressions des lignes marquées
A+
 

Pièces jointes

  • Macro mod.xls
    41.5 KB · Affichages: 147

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Euh la je suis bluffe!:eek:

Gorfael ca me semble marcher , ca nettoie bien les choses et Bebere avance de son cote et la aussi c`est super a ce stade. J`espere que tu vas pas te coucher trop tard. Bon le vendredi il n`y a rien a la tele

Mais vous faites quoi ds la vrai vie pour savoir tout ca?? Je me dis tjs qu`il y a que des informaticiens pour savoir faire ca mais bon on sait jamais... je peux esperer un jour

En tout cas merci bcp. je reviens voir Bebere demain et je teste tout cela des lundi au boulot en condition reelle pour voir si j`ai rien rate!!:D

Mais je suis sur le c*l, c`est trop sympa

Merci beaucoup a tous les 2. J`ai de la lecture ce WE

Permettez de repasser demain pour bebere et lundi si j`ai besoin d`un peu plus d`aide ou un pb

Bonne nuit

XCo
 

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Re - Gorfael et Bebere,

j`espere que vous allez bien. Et encore merci

Donc j`ai teste au final chez moi avec n file que + complet et ca marche bien

J`ai oublie un truc tout bete.

1 / Comment je lui dis a la macro de comparer les valeurs en Val absolues??
C`est vraiment idiot de ne pas l`avoir dit des le debut

2/ moins important donc tu peux oublier si t`as pas le temps
Si des valeurs restent en source 2 (donc non reportees), peux t`on les inserer ds la feuille resultat aux bonnes dates?? et en couleur rouge??
Bref inserer ligne et avoir rien col ABC et qqchose ds les Col EFG..
(quitte a lancer une deuxieme macro pour reporter le solde de la source 2)

Merci a tous les 2

XCo
 

Gorfael

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

Re XCo

1 / Comment je lui dis a la macro de comparer les valeurs en Val absolues??
au lieu de Range("Xy") mettre ABS(Range("Xy"))

2/ moins important donc tu peux oublier si t`as pas le temps
Si des valeurs restent en source 2 (donc non reportees), peux t`on les inserer ds la feuille resultat aux bonnes dates?? et en couleur rouge??
Bref inserer ligne et avoir rien col ABC et qqchose ds les Col EFG..
(quitte a lancer une deuxieme macro pour reporter le solde de la source 2)
quelles sont les bonnes dates : les dates de S1 ou les dates de S2 ?
les dates de S2 étant avant ou après les dates de S1 à cause de la fourchette de +/-4 jours
A+
 

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Salut Gorfael

ben tu m`oublies pas au moins. C`est tres sympa de m`aider autant sur mon pb

Pour le point 1, OK je corrige

Pour le point 2, ce que je veux dire c`est que OK c`est reconcilie et il me reste des donnees en source 2 ou 3 selon les cas.

Mais comme j`ai essaye de le dire en presentant mon pb, S1 = S2 + S3 donc au final si j`ai des donnees restantes en S2 et S3, faut que je verifie pourquoi j`ai rien ds S1 (style revoir tout l`historique des commendes du clients pour verifier qu`on s`est pas trompe de ref de produit ds une des commandes)
Bref si j`avais ds la feuille "resultat" les S2 et S3 en rouge et integre ds le bon mois (style les integrer avant changement du mois de la colonne ABC de la feuille resultat), ca me permettrait d`imprimer la feuille "resultat" et d`avoir le recap des donnees pour lesquelles S1 existe et pas de S2/S3, ou S2/S3 existe mais pas de S1

Cest pour cela que je pense que le mieux est d`avoir une deuxieme macro qui va reintgrer les donnees restantes de la S2 ds la feuille Resultat a la fin de chqaue mois (en regardant la date de la source 1 de la feuille Resultat

C`est clair ou pas ce que je te raconte?:p

XCo
 

Bebere

XLDnaute Barbatruc
Re : VBA - reconciliation - boucle selon 2 conditions

bonsoir Xco,Gorfael
dans source1,2 et 3 dans les dernières colonnes repères lignes traitées
dans feuille resultat j'ai laissé toutes les lignes de source1(on peut les oter)
à bientôt
 

Pièces jointes

  • Macrocxo.zip
    23.6 KB · Affichages: 66
  • Macrocxo.zip
    23.6 KB · Affichages: 63
  • Macrocxo.zip
    23.6 KB · Affichages: 66

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Bonsoir Bebere

D`abord merci a toi aussi. J`ai 2 solutions pour le meme prix.

Ca marche super la aussi. Je teste demain en direct sur un max de lignes!!:D

Un gors /grand merci a tous les 2. Vous avez du y passer pas mal de temps. Je vous poserai peut etre 1 ou 2 questions sur le code demain car j`aimerai bien au moins en comprendre un morceau.
Et puis quand je vois ca, je me dis que VBA apporte pleins de solutions.

Bon la c`est vous qui les apportez! Merci bcp pour le tps passe en esperant que ca aidera d`autres XLdiens


XCo
 

XCo

XLDnaute Occasionnel
Re : VBA - reconciliation - boucle selon 2 conditions

Bonsoir

Re Bebere et Gorfael, j`ai teste et j`ai des petits pb d`ajustement

Gorfael, le X ne se reporte pas... rien de grave donc je vais essayer de comprendre pourquoi. J`ai du mal mettre les absolus ou qqchose ds ce genre

Je dois aussi au final ajouter des colonnes a reporter

Permettez moi de revenir apres demain encore pour demander peut etre votre aide

Bonne soiree et encore merci

XCo
 

Discussions similaires

Réponses
8
Affichages
354

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260