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 !
At The One,Bonsoir,
Merci pour ton retour,
Je teste comme expliqué, je n'y avais pas pensé
Germaine
Bonsoir,
Merci pour ton retour,
Je teste comme expliqué, je n'y avais pas pensé
Germaine
Je viens de tester avec les mêmes données du tableau, ça fonctionne.Re,
Et sur mon fichier, lorsque tu modifies des données dans DATA-A ou DATA-B est-ce-que les calculs fonctionnent ?
Pas forcément, j'ai peut-être loupé un truc, mais il me faudrait des nouvelles données proches de la réalité pour fouiller un peu plus.Donc, il s'agit de mes nouvelles données le problème.
Bonsoir AtTheOne,Re, Peux-tu m"envoyer une capture d'écran du résultat de la formule après importation des nouvelles données ?
AtTheOne,Ok; Merci, je regarde mais il y a d’emblée une différences : les Factures de retour étaient dans les crédits, en fait elle sont dans les débits ...
Je pense que la formule coince quand dans une rubrique il n'y a pas de données. Je cherche et je reviendrai vers toi.
À bientôt
AtTheOne,Et c'est encore moi,
J'ai repèré 5 types de références :
AV suivi de 7 chiffres Fonctionne en tant qu'avoir
F Suivi de 7 chiffres Fonctionne en tant que facture
FAS suivi de 6 chiffres Fonctionne en tant que facture
FAT suivi de 6 chiffres Fonctionne en tant que facture
FR suivi de 7 chiffres Fonctionne en tant qu'avoir
Est-ce-bien ça ? Y en a-t-il d'autres ?
À bientôt
| Réf_Factures_A | =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];1)="F")*(GAUCHE(TS_DATA_A[N° pièce];2)<>"FR");"") |
| Réf_Avoirs_A | =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];2)="AV")+(GAUCHE(TS_DATA_A[N° pièce];2)="FR");"") |
| Factures_A | =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Factures_A;0));{"".""."".""});2;3;5;6) |
| Avoirs_A | =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Avoirs_A;0));{"".""."".""});2;3;5;6) |
| Réf_B | =SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9)) |
| Réf_Factures_B | =FILTRE(Réf_B;(GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR");"") |
| Réf_Avoirs_B | =FILTRE(Réf_B;(GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR");"") |
| 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)) |
=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(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))
Bonjour AtTheOne, le Forum,Bon, je crois avoir régler les problèmes
Les noms définis deviennent :
Réf_Factures_A =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];1)="F")*(GAUCHE(TS_DATA_A[N° pièce];2)<>"FR");"") Réf_Avoirs_A =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];2)="AV")+(GAUCHE(TS_DATA_A[N° pièce];2)="FR");"") Factures_A =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Factures_A;0));{"".""."".""});2;3;5;6) Avoirs_A =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Avoirs_A;0));{"".""."".""});2;3;5;6) Réf_B =SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9)) Réf_Factures_B =FILTRE(Réf_B;(GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR");"") Réf_Avoirs_B =FILTRE(Réf_B;(GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR");"") 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 devient :
VB:=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(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))
Fais des essais avec d'autres jeux de données pour vérifier.
Pas besoin de macro pour importer les nouveaux Jeux ?
Voir Pièce jointe
À bientôt
Bon, je crois avoir régler les problèmes
Les noms définis deviennent :
Réf_Factures_A =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];1)="F")*(GAUCHE(TS_DATA_A[N° pièce];2)<>"FR");"") Réf_Avoirs_A =FILTRE(TS_DATA_A[N° pièce];(GAUCHE(TS_DATA_A[N° pièce];2)="AV")+(GAUCHE(TS_DATA_A[N° pièce];2)="FR");"") Factures_A =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Factures_A;0));{"".""."".""});2;3;5;6) Avoirs_A =CHOISIRCOLS(FILTRE(TS_DATA_A;ESTNUM(EQUIV(TS_DATA_A[N° pièce];Réf_Avoirs_A;0));{"".""."".""});2;3;5;6) Réf_B =SUPPRESPACE(DROITE(TS_DATA_B[Libellé écriture];9)) Réf_Factures_B =FILTRE(Réf_B;(GAUCHE(Réf_B;1)="F")*(GAUCHE(Réf_B;2)<>"FR");"") Réf_Avoirs_B =FILTRE(Réf_B;(GAUCHE(Réf_B;2)="AV")+(GAUCHE(Réf_B;2)="FR");"") 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 devient :
VB:=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(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))
Fais des essais avec d'autres jeux de données pour vérifier.
Pas besoin de macro pour importer les nouveaux Jeux ?
Voir Pièce jointe
À bientôt
We use cookies and similar technologies for the following purposes:
Est ce que vous acceptez les cookies et ces technologies?
We use cookies and similar technologies for the following purposes:
Est ce que vous acceptez les cookies et ces technologies?