Microsoft 365 Trouver et calculer écarts ventes provenant de 2 systèmes

  • Initiateur de la discussion Initiateur de la discussion Germaine
  • Date de début Date de début

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 !

Germaine

XLDnaute Junior
Bonjour le forum,
Je dois vérifier la réciprocité des ventes provenant de 2 logiciels de comptabilité et 1 autre de vente.
Je dois trouver le même montant des au global.
La difficulté que je rencontre, ce sont les libellés de (DATA-B) qui sont vraiment mal foutus.
Pourriez-vous m'aider à mettre en place une réflexion, un retraitement me permettant de comparer les 2 fichiers afin d'expliquer les écarts.
Dans la Data, il y'a la notion de facture et d'avoir.
L'Avoir vient en soustraction de la vente et est dans la colonne debit dans le fichier de comptabilité, mais le fichier commercial toutes les données sont dans une seule colonne.
Dans le calcul des ventes du fichier commercial "DATA - A", il faut tenir compte que si le libellé est AV....représentant un avoir.
Dites moi
Vous remerciant par avance
Germaine
 

Pièces jointes

Bonjour à toutes & à tous, bonjour @Germaine
Bon je crois être parvenu à un résultat :

La liste des noms définis :
Réf_A=TS_DATA_A[N° pièce]
Réf_B=SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9))
Réf_Doublons=UNIQUE(ASSEMB.V(FILTRE(ASSEMB.V(Réf_A;"");FREQUENCE(EQUIV(Réf_A;Réf_A;0);EQUIV(Réf_A;Réf_A;0))>1;"");FILTRE(ASSEMB.V(Réf_B;"");FREQUENCE(EQUIV(Réf_B;Réf_B;0);EQUIV(Réf_B;Réf_B;0))>1;"")))
Réf_Factures_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;1)="F")*(GAUCHE(Réf_A;2)<>"FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Réf_Avoirs_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;2)="AV")+(GAUCHE(Réf_A;2)="FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Factures_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Factures_A;0));{"".""."".""});2;3;5;6)
Avoirs_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Avoirs_A;0));{"".""."".""});2;3;5;6)
Réf_Factures_B=FILTRE(Réf_B;((GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Réf_Avoirs_B=FILTRE(Réf_B;((GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Factures_B=ASSEMB.H(Réf_Factures_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Factures_B;0));{"".""."".""});1;3;5))
Avoirs_B=ASSEMB.H(Réf_Avoirs_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Avoirs_B;0));{"".""."".""});1;3;4))


La formule matricelle dynamique :
Enrichi (BBcode):
=LET(FA;FILTRE(Factures_A;ESTNA(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});
     FB;FILTRE(Factures_B;ESTNA(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});
     AA;FILTRE(Avoirs_A;ESTNA(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});
     AB;FILTRE(Avoirs_B;ESTNA(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});
     DFAB;LET(A;TRIER(FILTRE(Factures_A;ESTNUM(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});1);
              B;TRIER(FILTRE(Factures_B;ESTNUM(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});1);
              C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     DAAB;LET(A;TRIER(FILTRE(Avoirs_A;ESTNUM(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});1);
               B;TRIER(FILTRE(Avoirs_B;ESTNUM(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});1);
               C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     ASSEMB.V({"Pièces avec doublons".""."".""};
              LET(Lst;ASSEMB.V(CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Doublons;0));{"".""."".""});2;3;5;6);
                               ASSEMB.H(FILTRE(Réf_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{""});
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});1;3);
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});4)+ CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});5)));
                  Lst_triée;TRIERPAR(Lst;CHOISIRCOLS(Lst;1);1;CHOISIRCOLS(Lst;2);1);
                  SIERREUR(FILTRE(Lst_triée;CHOISIRCOLS(Lst_triée;1)<>"");{"".""."".""}));
              ASSEMB.H("Factures DATA-A absentes de DATA_B";{"".""};SOMME(CHOISIRCOLS(FA;4)));FA;
              ASSEMB.H("Factures DATA-B absentes de DATA_A";{"".""};SOMME(CHOISIRCOLS(FB;4)));FB;
              ASSEMB.H("Avoirs et retours DATA-A absents de DATA_B";{"".""};SOMME(CHOISIRCOLS(AA;4)));AA;
              ASSEMB.H("Avoirs et retours DATA-B absents de DATA_A";{"".""};SOMME(CHOISIRCOLS(AB;4)));AB;
              ASSEMB.H("Factures DATA-A différentes de DATA_B";{"".""};SI(LIGNES(DFAB)>=2;SOMME(CHOISIRCOLS(DFAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DFAB))))-SOMME(CHOISIRCOLS(DFAB;4)*EST.PAIR(SEQUENCE(LIGNES(DFAB))));0));DFAB;
              ASSEMB.H("Avoirs et retours DATA-A différents de DATA_B";{"".""};SI(LIGNES(DAAB)>=2;SOMME(CHOISIRCOLS(DAAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DAAB))))-SOMME(CHOISIRCOLS(DAAB;4)*EST.PAIR(SEQUENCE(LIGNES(DAAB))));0));DAAB))
Voir la pièce jointe.
(Dans le fichier joint il n'y a pas de doublon, mais tu peux en créer ...)
À bientôt
 

Pièces jointes

Bonjour à toutes & à tous, bonjour @Germaine
Bon je crois être parvenu à un résultat :

La liste des noms définis :
Réf_A=TS_DATA_A[N° pièce]
Réf_B=SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9))
Réf_Doublons=UNIQUE(ASSEMB.V(FILTRE(ASSEMB.V(Réf_A;"");FREQUENCE(EQUIV(Réf_A;Réf_A;0);EQUIV(Réf_A;Réf_A;0))>1;"");FILTRE(ASSEMB.V(Réf_B;"");FREQUENCE(EQUIV(Réf_B;Réf_B;0);EQUIV(Réf_B;Réf_B;0))>1;"")))
Réf_Factures_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;1)="F")*(GAUCHE(Réf_A;2)<>"FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Réf_Avoirs_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;2)="AV")+(GAUCHE(Réf_A;2)="FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Factures_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Factures_A;0));{"".""."".""});2;3;5;6)
Avoirs_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Avoirs_A;0));{"".""."".""});2;3;5;6)
Réf_Factures_B=FILTRE(Réf_B;((GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Réf_Avoirs_B=FILTRE(Réf_B;((GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Factures_B=ASSEMB.H(Réf_Factures_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Factures_B;0));{"".""."".""});1;3;5))
Avoirs_B=ASSEMB.H(Réf_Avoirs_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Avoirs_B;0));{"".""."".""});1;3;4))


La formule matricelle dynamique :
Enrichi (BBcode):
=LET(FA;FILTRE(Factures_A;ESTNA(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});
     FB;FILTRE(Factures_B;ESTNA(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});
     AA;FILTRE(Avoirs_A;ESTNA(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});
     AB;FILTRE(Avoirs_B;ESTNA(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});
     DFAB;LET(A;TRIER(FILTRE(Factures_A;ESTNUM(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});1);
              B;TRIER(FILTRE(Factures_B;ESTNUM(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});1);
              C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     DAAB;LET(A;TRIER(FILTRE(Avoirs_A;ESTNUM(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});1);
               B;TRIER(FILTRE(Avoirs_B;ESTNUM(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});1);
               C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     ASSEMB.V({"Pièces avec doublons".""."".""};
              LET(Lst;ASSEMB.V(CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Doublons;0));{"".""."".""});2;3;5;6);
                               ASSEMB.H(FILTRE(Réf_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{""});
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});1;3);
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});4)+ CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});5)));
                  Lst_triée;TRIERPAR(Lst;CHOISIRCOLS(Lst;1);1;CHOISIRCOLS(Lst;2);1);
                  SIERREUR(FILTRE(Lst_triée;CHOISIRCOLS(Lst_triée;1)<>"");{"".""."".""}));
              ASSEMB.H("Factures DATA-A absentes de DATA_B";{"".""};SOMME(CHOISIRCOLS(FA;4)));FA;
              ASSEMB.H("Factures DATA-B absentes de DATA_A";{"".""};SOMME(CHOISIRCOLS(FB;4)));FB;
              ASSEMB.H("Avoirs et retours DATA-A absents de DATA_B";{"".""};SOMME(CHOISIRCOLS(AA;4)));AA;
              ASSEMB.H("Avoirs et retours DATA-B absents de DATA_A";{"".""};SOMME(CHOISIRCOLS(AB;4)));AB;
              ASSEMB.H("Factures DATA-A différentes de DATA_B";{"".""};SI(LIGNES(DFAB)>=2;SOMME(CHOISIRCOLS(DFAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DFAB))))-SOMME(CHOISIRCOLS(DFAB;4)*EST.PAIR(SEQUENCE(LIGNES(DFAB))));0));DFAB;
              ASSEMB.H("Avoirs et retours DATA-A différents de DATA_B";{"".""};SI(LIGNES(DAAB)>=2;SOMME(CHOISIRCOLS(DAAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DAAB))))-SOMME(CHOISIRCOLS(DAAB;4)*EST.PAIR(SEQUENCE(LIGNES(DAAB))));0));DAAB))
Voir la pièce jointe.
(Dans le fichier joint il n'y a pas de doublon, mais tu peux en créer ...)
À bientôt
Bonjour AtTheOne, le Forum,
Merci, je vais tester et faire un retour.
J'ai des petits doublons qui ne sont pas évident à trouver compte tenu de la taille de ma data, donc ça devrait m'être fort utile.
Je vous fais un retour.
Germaine
 
Bonjour à toutes & à tous, bonjour @Germaine
Bon je crois être parvenu à un résultat :

La liste des noms définis :
Réf_A=TS_DATA_A[N° pièce]
Réf_B=SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9))
Réf_Doublons=UNIQUE(ASSEMB.V(FILTRE(ASSEMB.V(Réf_A;"");FREQUENCE(EQUIV(Réf_A;Réf_A;0);EQUIV(Réf_A;Réf_A;0))>1;"");FILTRE(ASSEMB.V(Réf_B;"");FREQUENCE(EQUIV(Réf_B;Réf_B;0);EQUIV(Réf_B;Réf_B;0))>1;"")))
Réf_Factures_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;1)="F")*(GAUCHE(Réf_A;2)<>"FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Réf_Avoirs_A=FILTRE(TS_DATA_A[N° pièce];((GAUCHE(Réf_A;2)="AV")+(GAUCHE(Réf_A;2)="FR"))*ESTNA(EQUIV(Réf_A;Réf_Doublons;0));"")
Factures_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Factures_A;0));{"".""."".""});2;3;5;6)
Avoirs_A=CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Avoirs_A;0));{"".""."".""});2;3;5;6)
Réf_Factures_B=FILTRE(Réf_B;((GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Réf_Avoirs_B=FILTRE(Réf_B;((GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR"))*ESTNA(EQUIV(Réf_B;Réf_Doublons;0));"")
Factures_B=ASSEMB.H(Réf_Factures_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Factures_B;0));{"".""."".""});1;3;5))
Avoirs_B=ASSEMB.H(Réf_Avoirs_B;CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Avoirs_B;0));{"".""."".""});1;3;4))


La formule matricelle dynamique :
Enrichi (BBcode):
=LET(FA;FILTRE(Factures_A;ESTNA(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});
     FB;FILTRE(Factures_B;ESTNA(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});
     AA;FILTRE(Avoirs_A;ESTNA(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});
     AB;FILTRE(Avoirs_B;ESTNA(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});
     DFAB;LET(A;TRIER(FILTRE(Factures_A;ESTNUM(EQUIV(Réf_Factures_A;Réf_Factures_B;0));{"".""."".""});1);
              B;TRIER(FILTRE(Factures_B;ESTNUM(EQUIV(Réf_Factures_B;Réf_Factures_A;0));{"".""."".""});1);
              C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     DAAB;LET(A;TRIER(FILTRE(Avoirs_A;ESTNUM(EQUIV(Réf_Avoirs_A;Réf_Avoirs_B;0));{"".""."".""});1);
               B;TRIER(FILTRE(Avoirs_B;ESTNUM(EQUIV(Réf_Avoirs_B;Réf_Avoirs_A;0));{"".""."".""});1);
               C;TRIER(ASSEMB.V(FILTRE(A;CHOISIRCOLS(A;4)<>CHOISIRCOLS(B;4);{"".""."".""});FILTRE(B;CHOISIRCOLS(B;4)<>CHOISIRCOLS(A;4);{"".""."".""})));
          FILTRE(C;CHOISIRCOLS(C;1)<>"";{"".""."".""}));
     ASSEMB.V({"Pièces avec doublons".""."".""};
              LET(Lst;ASSEMB.V(CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(Réf_A;Réf_Doublons;0));{"".""."".""});2;3;5;6);
                               ASSEMB.H(FILTRE(Réf_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{""});
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});1;3);
                                        CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});4)+ CHOISIRCOLS(FILTRE(TS_DATA_B;ESTNUM(EQUIV(Réf_B;Réf_Doublons;0));{"".""."".""});5)));
                  Lst_triée;TRIERPAR(Lst;CHOISIRCOLS(Lst;1);1;CHOISIRCOLS(Lst;2);1);
                  SIERREUR(FILTRE(Lst_triée;CHOISIRCOLS(Lst_triée;1)<>"");{"".""."".""}));
              ASSEMB.H("Factures DATA-A absentes de DATA_B";{"".""};SOMME(CHOISIRCOLS(FA;4)));FA;
              ASSEMB.H("Factures DATA-B absentes de DATA_A";{"".""};SOMME(CHOISIRCOLS(FB;4)));FB;
              ASSEMB.H("Avoirs et retours DATA-A absents de DATA_B";{"".""};SOMME(CHOISIRCOLS(AA;4)));AA;
              ASSEMB.H("Avoirs et retours DATA-B absents de DATA_A";{"".""};SOMME(CHOISIRCOLS(AB;4)));AB;
              ASSEMB.H("Factures DATA-A différentes de DATA_B";{"".""};SI(LIGNES(DFAB)>=2;SOMME(CHOISIRCOLS(DFAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DFAB))))-SOMME(CHOISIRCOLS(DFAB;4)*EST.PAIR(SEQUENCE(LIGNES(DFAB))));0));DFAB;
              ASSEMB.H("Avoirs et retours DATA-A différents de DATA_B";{"".""};SI(LIGNES(DAAB)>=2;SOMME(CHOISIRCOLS(DAAB;4)*EST.IMPAIR(SEQUENCE(LIGNES(DAAB))))-SOMME(CHOISIRCOLS(DAAB;4)*EST.PAIR(SEQUENCE(LIGNES(DAAB))));0));DAAB))
Voir la pièce jointe.
(Dans le fichier joint il n'y a pas de doublon, mais tu peux en créer ...)
À bientôt
Bonsoir AtTheOne, le forum,
Parfait, parfait et un grand merci pour votre implication.
Les doublons sont listés et calculés.
Merci pour le partage
Germaine
 
- 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