comparer deux liste et comptabiliser

fxcat

XLDnaute Nouveau
Bonjour à tous,

Je fais la compta pour une assoc a but non lucratif, et Je ne sait pas du tout comment faire pour importer une liste de cotisation dans une autres, et additionner ces cotises, et le nombre de dons pour chaques cotisants.

J'ai fait un petit tableau simplifié au max, avec feuil1, les totaux, et feuil2, la liste à importer.

Si vous avez des idées merci par avance, en attendant je continue de chercher.

Inutile de dire que je ne suis pas trés fort en vb! ;-)

f-x
 

Pièces jointes

  • comptabilité.xlsx
    15.3 KB · Affichages: 52
  • comptabilité.xlsx
    15.3 KB · Affichages: 59
  • comptabilité.xlsx
    15.3 KB · Affichages: 47

excfl

XLDnaute Barbatruc
Re : comparer deux liste et comptabiliser

Bonjour,

Cela te convient-il ?

excfl
 

Pièces jointes

  • comptabilité.xlsx
    11.5 KB · Affichages: 63
  • comptabilité.xlsx
    11.5 KB · Affichages: 63
  • comptabilité.xlsx
    11.5 KB · Affichages: 57
Dernière édition:

fxcat

XLDnaute Nouveau
Re : comparer deux liste et comptabiliser

Au fait cette partie est petite à coté de l'ensemble des manips que je veux faire, et bien sur avec pas mal de données.
Je ne veux pas qu'on me fasse tout 'tout cuit' alors j'y vais à tatons et j'y arrive (parfois;-)
cette macro serais incluse evec d'autres.

ps: j'ai un autre post avec un autre petit hic en macro.

à+
 

excfl

XLDnaute Barbatruc
Re : comparer deux liste et comptabiliser

Re,

Le même fichier avec davantage de dates et de noms à saisir.

excfl
 

Pièces jointes

  • comptabilité.xlsx
    12.7 KB · Affichages: 53
  • comptabilité.xlsx
    12.7 KB · Affichages: 51
  • comptabilité.xlsx
    12.7 KB · Affichages: 57

gauguin

XLDnaute Nouveau
Re : comparer deux liste et comptabiliser

Je poste également un essai avec formule, pour le fun.

Pour le "tout en macro", si ce n'est à but d'entraînement, il est souvent préférable d'utiliser au maximum les fontionnalités intégrées d'Excel (dans ce cas là des formules par exemple) car elles seront (presque) toujours plus rapides, efficaces et sécurisées que tout ce que vous pourrez coder par vous même.

Cordialement,
 

Pièces jointes

  • Copie de comptabilité.xlsm
    16 KB · Affichages: 44
Dernière édition:

fxcat

XLDnaute Nouveau
Re : comparer deux liste et comptabiliser

Merci a vous,

effectivement la formule marche même si je ne la comprend pas vraiment, mais si j'ai un fichier texte qui n'est pas dans le même ordre ou avec des noms en plus ou en moins, je ne suis pas sur que ça marche aussi.

pouvez-vous me décrire cette formule svp? me l'expliquer.
 

excfl

XLDnaute Barbatruc
Re : comparer deux liste et comptabiliser

Re,

Le même fichier avec davantage de dates et de noms à saisir.

Le fichier du "post 6" permet d'ajouter autant de ligne(s) et de nom(s) que nécessaire.

=SOMME.SI('import_txt '!$A$2:$B$20;A2;'import_txt '!$B$2:$B$20)


=NB.SI('import_txt '!$A$2:$A$20;A2)

Mettre la souris sur une formule et cliquer sur l'icone somme automatique : autres fonctions.
Tu as l'explication des deux formules.

excfl
 
Dernière édition:

gauguin

XLDnaute Nouveau
Re : comparer deux liste et comptabiliser

Bonjour,

Dans la feuille Totaux, sous chaque mois, on cherche à faire la somme des dons du mois en ligne 1.
"B2 : D8" est une tableau de 7 lignes par 3 colonnes et on peut s'imaginer les cases comme ça par exemple :
Code:
tableau[1][1] = 1èreligne, 1ère colonne
tableau[1][2] = 1èreligne, 2ème colonne
tableau[2][3] = 2ème ligne, 3ème colonne
Quand vous faites : février!A2:A8="Pierre", Excel retourne en interne un tableau comme ça :
Code:
{VRAI;VRAI;FAUX;FAUX;FAUX;FAUX;FAUX}
les point-virgules représentant une nouvelle ligne, comme une colonne de valeur.

D'un autre côté, b2:d8 donne ça :
Code:
{12.2.2;3.12.21;14.24.14;25.3.12;1.13.3;2.10.11;0.10.5}
(Pour voir comment Excel évalue vos références dans les formules, surlignez les et appuyez sur F9).
On a donc là des valeurs séparées des fois par des points et des fois par des virgules. Quand la séparation est un point, ça veut dire que c'est une valeur qui est sur la même ligne et quand la séparation est un point-virgule,cela signifie que l'on change de ligne.

Donc le SI de la formule en B2 donne, une fois les références "résolues" :
Code:
Si({VRAI;VRAI;FAUX;FAUX;FAUX;FAUX;FAUX},{12.2.2;3.12.21;14.24.14;25.3.12;1.13.3;2.10.11;0.10.5},0).
Mais on voit là que le tableau de valeurs dans le test logique du SI, ne comprend pas autant de valeurs que dans le tableau de valeurs.
Dans ce cas là, Excel étend les valeurs dans le test logique. La suite de VRAI/FAUX est transformée en :
{VRAI.VRAI.VRAI;VRAI.VRAI.VRAI;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX}

Ensuite, Excel opère une substitution, en remplaçant respectivement la valeur VRAI par la valeur qui se situe au même emplacement dans le tableau de résultats et par un 0 sinon. A noter que la plage de 0 est également étendue, pour donner :
Code:
{0.0.0;0.0.0;0.0.0;0.0.0;0.0.0;0.0.0;0.0.0}
Autrement dit, si j'ai un VRAI à l'emplacement tableau[2][3] dans le test du SI, je récupère la valeur à l'emplacement [2,3] dans la partie (valeur_si_vrai) du si et si j'ai un Faux, je récupère la valeur à ce même emplacement dans le tableau qui est dans la partie (valeur_si_faux) du SI (en l'occurence là de 0).

Vous pouvez d'ailleurs faire des tests, en surlignant une partie de la formule, par exemple :
Code:
février!A2:A8="Pierre"
dans le si, en appuyant sur F9 et en revalidant par Ctrl + Maj + Entrée

Pour ce qui est du N dans la formule, il est superflu ici (sous les colonnes mois). Il sert à transformer la valeur "VRAI" ou "FAUX" en 1 ou 0.
Il est en revanche utile pour le nombre de dons; car
Code:
SI(février!A2:A8="Pierre";février!B2:D8;0)<>0
renvoie un suite de VRAI/FAUX =>
Code:
{VRAI.VRAI.VRAI;VRAI.VRAI.VRAI;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX}
En encadrant ce résultat par N on convertit ce tableau en nombre =>
Code:
{1.1.1;1.1.1;0.0.0;0.0.0;0.0.0;0.0.0;0.0.0}

Pour la vérification sur le mois, c'est pareil, ce qui fait que la formule finale devient:
Code:
=SOMME(
SI({VRAI.VRAI.VRAI;VRAI.VRAI.VRAI;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX};{12.2.2;3.12.21;14.24.14;25.3.12;1.13.3;2.10.11;0.10.5};0)*
({VRAI.VRAI.VRAI;VRAI.VRAI.VRAI;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;FAUX.FAUX.FAUX})
)

Pour chaque item du tableau du test logique, on fait l'opération:
VRAI ou FAUX * 12(par exemple) puis on multiplie ce résultat par le tableau du test sur le mois VRAI ou FAUX. Donc si on a pierre = VRAI, SI renvoie la valeur correspondante que l'on multiplie par VRAI ou FAUX, c'est à dire 0 ou 1 pour obtenir la valeur ou 0.

Voilà pour l'explication, j'espère que ce n'est pas trop brouillon.

Cordialement,
 
Dernière édition:

Statistiques des forums

Discussions
312 391
Messages
2 087 954
Membres
103 685
dernier inscrit
janguypol