prestations réciproques

morlic63

XLDnaute Nouveau
Bonjour à tous

Je suis un tout nouveau membre, je compte donc sur votre mansuétude...

Je cherche à automatiser une formule Excel dans un tableau d'écarts comparant 2 tableaux (par hypothèse dans un groupe de sociétés) : le 1er tableau indique le montant des ventes (enregistrées chez les vendeurs), le second indique le montant des achats (enregistrés chez les acheteurs donc) -cf classeur joint.

Mon souci est de concevoir une formule d'écart (par ex. en cellule C33) qui puisse se copier dans toutes les cellules du tableau du bas.

Quelqu'un a déjà été confronté à ce genre de problématique ?
D'avance merci
 

Pièces jointes

  • prestations reciproques.xls
    15.5 KB · Affichages: 215

mth

XLDnaute Barbatruc
Re : prestations réciproques

Bonjour,

A essayer en cellule C33 de ton tableau écart, puis copier coller dans les autres cellules:

Code:
=C5-INDEX($C$18:$J$26;EQUIV(C$32;$B$18:$B$25;0);EQUIV($B33;$C$17:$J$17;0))

@ +

mth
 

Pièces jointes

  • prestations reciproques.zip
    4.9 KB · Affichages: 111

mth

XLDnaute Barbatruc
Re : prestations réciproques

re :)

Si celà peut t'aider, voici un peu de détail sur cette formule et les fonctions utilisées:

C5-INDEX($C$18:$J$26;EQUIV(C$32;$B$18:$B$25;0);EQUIV($B33;$C$17:$J$17;0)):

On prend C5 directement, car le tableau Ecart a exactement la même structure que le tableau Vendeur donc en recopiant la formule à droite ou vers le bas, il sera toujours fait référence à la bonne cellule du tableau Vendeur

INDEX($C$18:$J$26;EQUIV(C$32;$B$18:$B$25;0);EQUIV($B33;$C$17:$J$17;0))

Fonction Index:

Syntaxe: INDEX(matrice;no_lig;no_col)

Cette fonction permet de renvoyer la valeur d'un tableau, se trouvant à l'intersection d'une ligne et d'une colonne.
Dans notre exemple, la matrice de recherche est la plage de cellules du tableau Vendeur allant de C18 à J26.
Afin de pouvoir copier et coller notre formule partout dans le tableau écart, les colonnes et les numéros de lignes sont précédés du signe $, qui permet de "figer" la référence à cette plage fixe.
La plage de recherche étant déterminée, la fonction EQUIV() va permettre de trouver sur quelle ligne, et dans quelle colonne, se trouve la valeur que l'on cherche.

Fonction EQUIV

La fonction EQUIV recherche un élément dans une plage de cellules et renvoie la position relative de l’élément dans cette plage.

Syntaxe: EQUIV(valeur cherchée, plage, type)

Pour notre exemple: EQUIV(C$32;$B$18:$B$25;0) va permettre de déterminer le numéro de ligne
Valeur cherchée = C$32 : on cherche donc la valeur A
pour recopier la formule vers la droite, la colonne devra évoluer (on cherchera D$32 puis E$32 etc …) donc la référence de la colonne n'est pas précédée du signe $.
En revanche, pour pouvoir recopier la formule vers le bas en faisant toujours référence à la ligne 32, le numéro de ligne est précédé du signe $.
plage de recherche = $B$18:$B$2 : on cherche notre valeur dans la colonne B, entre les lignes 18 et 25 du tableau Acheteur.
Pour les mêmes raisons que ci-dessus, pour pouvoir copier coller la formule dans les autres lignes et colonnes de notre tableau Ecart, tout en faisant toujours référence à cette plage de cellules fixe, les colonnes et les lignes sont précédées du signe $.
type = 0 : Type zéro, indique que l'on recherche exactement cette valeur.
Les autres types disponibles sont 1 (pour rechercher la valeur la plus élevée inférieure ou égale à celle de la valeur cherchée) ou -1 ( pour rechercher la plus petite valeur supérieure ou égale à celle de la valeur cherchée)
si omis, par défaut le type est à 1
Concrètement dans notre exemple, le A est trouvé en B18, soit la 1ère ligne de la plage B18 à B25, la formule renvoie donc le résultat 1 si nous cherchions B, la fonction aurait renvoyé 2 car le B se trouve sur la 2ème ligne.


Dans la deuxième partie de la formule, EQUIV($B33;$C$17:$J$17;0) permet de déterminer le numéro de colonne.

Valeur cherchée = $B33, on cherche donc 1.
plage de recherche = $C$17:$J$17 soit les valeurs de la ligne 17 du tableau Acheteur.
type = 0 : Valeur exacte comme pour la ligne
Concrètement dans notre exemple, le 1 est dans la colonne C, soit la 1ère colonne de la plage de recherche, la formule renvoie donc le résultat 1.
si nous cherchions 4, la formule aurait renvoyé 4 car cette valeur se trouve dans la 4ème colonne.

En conclusion:
= INDEX($C$18:$J$26;EQUIV(C$32;$B$18:$B$25;0);EQUIV($B33;$C$17:$J$17;0)) revient dans notre exemple à écrire :
=INDEX($C$18:$J$26;1;1) soit renvoyer la valeur se situant dans le tableau C18:J26, à l'intersection de la ligne 1 et de la colonne 1, et l'on obtient donc la valeur 9.

Voili voilou, suis un peu bavarde :rolleyes: ... mais j'espère que cela t'aidera à comprendre ces fonctions et surtout les réutiliser pour d'autres choses, car elles sont vraiment bien pratiques.

Bonne soirée à toi et à une prochaine fois peut-être,

mth
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote