Le miracle du Sommeprod ?

  • Initiateur de la discussion Batiscaf
  • Date de début
B

Batiscaf

Guest
Bonsoir le forum,
Et particulièrement Monique je pense.

Il se fait tard et je m'embrouille pas mal:
Comme vous pourrez le voir dans l'exemple ci-joint, je me retrouve à rapprocher 2 listes en fonction d'une seule valeur commune "N°PB".

Seulement cette valeur n'apparaît toujours qu'une fois dans l'onglet de référence "Base1", et parfois en plusieurs fois dans mon onglet de recherche. Du coup je pensais m'orienter vers le produit miracle sommeprod pour pouvoir indiquer les montants correspondants dans les colonnes oranges de Base1, mais bien évidement je me suis encore planté.

De plus, j'ai besoin de retrouver dans le 3è onglet, les n°PB que Base2 n'a pas pu importer dans Base1, avec leurs montants.

Concernant SOMMEPROD :
En fait j'ai un soucis avec cette notion de multiplication que l'on trouve dans cette fonction. Je n'arrive pas à piger ce principe.
Monique, j'ai chargé du site la démo Sommeprod que tu avais fait avec Céléda, et ça m'a encore plus perdu.

Alors si vous pouvez m'aider sur les 2 sujets (la pièce jointe et les principes sommeprod), je vous en serais très reconnaissant.

Bien cordialement.

Batiscaf.
 

Pièces jointes

  • B2dsB1forum.zip
    7.7 KB · Affichages: 18
  • B2dsB1forum.zip
    7.7 KB · Affichages: 18
  • B2dsB1forum.zip
    7.7 KB · Affichages: 17
J

Jean-Marie

Guest
Bonsoir Batiscaf

Pour compléter le tableau de Bas1, voici la formule avec sommeprod
=SOMMEPROD((Base2!$G$2:$G$42=$D3)*Base2!I$2:I$42)

(Base2!$G$2:$G$42=$D3) ici on utilise un comparateur = (<;>;<=;>=) qui retourne VRAI ou FAUX.
VRAI équivaut à une valeur numérique de 1
FAUX équivaut à une valeur numérique de 0

SI l'on fait FAUX * VRAI cela équivaut numériquement à faire 0 * 1 = 0
SI l'on fait VRAI * VRAI cela correspond à faire 1 * 1 donc 1

SI l'on fait FAUX + VRAI cela equivaut numériquement à faire 0 + 1 = 1
SI l'on fait VRAI + VRAI cela correpond à faire 1 + 1 = 1 (valeur VRAI)

Tu peux faire un glisser/deposser de la formule.

Pour le tableau 3 "pas dans Base 1", cela ce complique, il y a deux jours j'avais posté cette formule matricielle à valider par Ctrl+Shift+Entrer. (j'ai du adapter à ton cas les indices de lignes et le fait que tu peux avoir des doublons dans Base2)

=SI(LIGNE()-3<=SOMME((NB.SI(Base1!$D$3:$D$38;Base2!$G$2:$G$42)=0)*1);INDEX(Base2!$G$2:$G$42;PETITE.VALEUR(SI(NB.SI(Base1!$D$3:$D$38;Base2!$G$2:$G$42)=0;(LIGNE(Base2!$G$2:$G$42)-1);65536);LIGNE()-3);1);"")

Cette partie SOMME((NB.SI(Base1!$D$3:$D$38;Base2!$G$2:$G$42)=0)*1) retourne le nombre de valeur inconnue dans la base1

Cette autre partie INDEX(Base2!$G$2:$G$42;...;1) retourne une valeur de la base2 ane fonction de la matrice

Cette partie PETITE.VALEUR(...;LIGNE()-3) indique à index le numéro de positionnement de la valeur à chercher.

et enfin SI(NB.SI(Base1!$D$3:$D$38;Base2!$G$2:$G$42)=0;(LIGNE(Base2!$G$2:$G$42)-1);65536), place dans une matrice "virtuelle" les numéros des lignes ou le N° PB ne figurent pas dans la liste Base1.

@+Jean-Marie
 

Pièces jointes

  • B2dsB1forum.zip
    9.6 KB · Affichages: 20
  • B2dsB1forum.zip
    9.6 KB · Affichages: 21
  • B2dsB1forum.zip
    9.6 KB · Affichages: 20
B

Batiscaf

Guest
Bonjour Jean-Marie, le Forum,

Merci pour tes explications sur les équivalances numériques dans les comparaisons.
C'est effectivement celà que je n'avais pas du bien intégrer.
Les tests que j'ai fait ce matin ont fonctionnés.

Par contre, pour ce qui est de la formule sur la base3, je n'ai pas encore le niveau. Je me suis permis de faire juste un copier/coller, pour ne pas laisser mes collègues dans la panade.
Je suis en vacances ce soir et j'ai bien l'impression que pas mal de mes neurones ont déjà pris la route.

Encore merci à toi et à tous les sauveteurs du Forum qui interviennent régulièrement à notre secours, à toutes heures et par tous temps.

A bientôt.

Batiscaf.
 

Discussions similaires

Réponses
8
Affichages
2 K

Statistiques des forums

Discussions
312 571
Messages
2 089 775
Membres
104 272
dernier inscrit
stef606