Aide pour une formule

Nessie

XLDnaute Occasionnel
Bonsoir,

Je sèche sur une formule qui vous paraîtra simple mais qui me perturbe. Je vous joins un fichier exemple.

Il y a 2 feuilles :
la première, SUIVI, est un tableau qui a été créé pour effectuer un suivi de stocks dont les données proviennent d'un logiciel, pour certaines de l'extraction d'un fichier excel.
Il a été construit et la saisie des données est manuelle. Je ne dois pas y toucher mais l'améliorer en automatisant au possible le rapatriement de données.

J'ai donc commencé par copier/coller les données de l'extraction dans une feuille, la deuxième, que j'ai appelé BD. Il me faut donc que certaines lignes uniquement de BD soient reprises dans SUIVI. Pour cela, j'ai voulu faire des SI, Et et RECHERCHEV mais je me heurte à plein d'obstacles.
Le dénominateur commun entre les 2 tableaux est le code des produits (310, 340, etc...). J'ai donc ajouté une colonne afin d'y mettre les codes à chaque ligne (cf colonne rouge) pour rendre possible la RECHERCHEV. Mais même ça, je pêche : seules les T00 de la BD doivent être reprises en fonction du code produit. (cf fichier joint)


Autre point, le tableau source ne contient aucune indication de date. Or, l'idée est que les données que je vais extraire chaque mois et venir coller dans BD doivent venir alimenter la colonne du mois concerné...
Ce que j'ai pensé à faire est une liste déroulante de mois. Ainsi dans mon commencement de formule, j'avais mis la condition du mois =Si(cell de la liste déroulante>"JANVIER";0;........)

Pas très heureux je sais. J'ai vraiment besoin de votre aide.
J'espère avoir été claire
 

Pièces jointes

  • Help.xlsx
    12.2 KB · Affichages: 63
  • Help.xlsx
    12.2 KB · Affichages: 69
  • Help.xlsx
    12.2 KB · Affichages: 67
Dernière édition:

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

Bonjour,

explication
Code:
=INDEX(BD_stock!G:G;EQUIV('111D Non Inventoriés'!A43&"T00";BD_stock!B:B&BD_stock!C:C;0))
est avant tout à validé par ctrl+maj+entree (matriciel) et non pas simplement entree
elle se moque de la nature de la valeur à renvoyer (texte ou nombre)
on recherche en colonne G la valeur correspondante à
valeur colonne A et T00 dans les colonnes B et C
en cas d'absence de valeur trouvée, tu auras #N/A
tes formules n'étaient pas validées en matriciel et parfois des erreurs de colonnes

contrairement à sommeprod (à validé par simple entree) qui ne peut renvoyer que des nombres, les critères ayant l'air plus clair

Code:
=SOMMEPROD((BD!$B$2:$B$100=GAUCHE($A6;3)*1)*(BD!$C$2:$C$100="T00")*BD!$F$2:$F$100)
(BD!$B$2:$B$100=GAUCHE($A6;3)*1) critère 1
(BD!$C$2:$C$100="T00") critère 2
BD!$F$2:$F$100 valeur à renvoyer

sympa la fonction =SheetName() qui te donne le nom de l'onglet
Code:
=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;NBCAR(CELLULE("nomfichier"))-TROUVE("]";CELLULE("nomfichier")))
fait la même chose sans VBA (macro)

Oulaaaaaa ! St007 ! Laisse-moi regarder tout ça !
 

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

Bonjour,

explication
Code:
=INDEX(BD_stock!G:G;EQUIV('111D Non Inventoriés'!A43&"T00";BD_stock!B:B&BD_stock!C:C;0))
est avant tout à validé par ctrl+maj+entree (matriciel) et non pas simplement entree
elle se moque de la nature de la valeur à renvoyer (texte ou nombre)
on recherche en colonne G la valeur correspondante à
valeur colonne A et T00 dans les colonnes B et C
en cas d'absence de valeur trouvée, tu auras #N/A
tes formules n'étaient pas validées en matriciel et parfois des erreurs de colonnes

contrairement à sommeprod (à validé par simple entree) qui ne peut renvoyer que des nombres, )

Jusqu'ici, je comprends. Effectivement être obligé de convertir systématiquement est une manip en plus.
J'ai ajouté un SIERREUR à ta formule et figé des cellules.

Reste le problème du lien avec le mois. En attendant, j'ai opté pour un pauvre SI(mois de la colonne = mois sélectionné dans BD; alors INDEX blabla)
Code:
=SIERREUR(SI(F$6=BD_stock!$D$1;INDEX(BD_stock!$G:$G;EQUIV('111D Non Inventoriés'!$A10&"T00";BD_stock!$B:$B&BD_stock!$C:$C;0));0);0)
en prenant soin de valider par ctrl+maj+entrée ;)
 
Dernière édition:

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

Bonsoir,
De retour chez moi, je me remets à bosser. Ma formule se présente ainsi.
{=SIERREUR(SI(D$6=MSLIV!$C$1;INDEX(MSLIV!$G:$G;EQUIV(GAUCHE($A$7;3)&$C:$C&"T00";MSLIV!$A:$A&MSLIV!$B:$B&MSLIV!$C:$C;0));0);0)}

J'arrive presque à bout de cette formule mais je ne comprends pas pourquoi elle ne me renvoie pas de résultat. EN effet, je dois afficher le valeur selon un nouveau critère, celui du code compagnie que je dois rajouter en C dans 'Non Inventorié' et qui est dans la BD en A.
Où se situe mon erreur ?
 
Dernière édition:

st007

XLDnaute Barbatruc
Re : Aide pour une formule

j'ai un peu lâcher l'affaire (je ne sais plus sur quel fichier tu joues) mais

equiv cherche la ligne correspondante dans G:G
gauche(A7;3) dans msilv!A:A ,ok admettons
C:C dans msilv!B:B c'est quoi çà ?
t00 dans msilv!C:C ok
 
Dernière édition:

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

En fait, je joue sur le même fichier, j'ai simplement changé le nom de l'onglet BD que j'ai appelé MSLIV et il m'a été demandé de rajouté en C dans '1112D Non Invent.' le code compagnie que tu as dans MSLIV en A.
Ma formule doit donc renvoyer la valeur de G:G qui correspond à Gauche(A7;3) et "T00" mais aussi le code compagnie qui apparaîtra dans C.

Vois-tu ?
 

st007

XLDnaute Barbatruc
Re : Aide pour une formule

j'ai un peu lâcher l'affaire (je ne sais plus sur quel fichier tu joues) mais

equiv cherche la ligne correspondante dans G:G
gauche(A7;3) dans msilv!A:A ,ok admettons
C:C dans msilv!B:B c'est quoi çà ?
t00 dans msilv!C:C ok


C7 au lieu de C:C dans msliv b:b

dans le bon ordre des colonnes de recherche et si j'ai bien suivi

Code:
=INDEX(MSLIV!G:G;EQUIV(GAUCHE($B7;3)&C7&"T00";MSLIV!B:B&MSLIV!A:A&MSLIV!C:C;0))

on affiche G
en cherchant
gauche B7 dans msliv b:b
C7 dans msliv A:A
T00 dans msliv C:C

verdict ?
 

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

C7 au lieu de C:C dans msliv b:b

dans le bon ordre des colonnes de recherche et si j'ai bien suivi

Code:
=INDEX(MSLIV!G:G;EQUIV(GAUCHE($B7;3)&C7&"T00";MSLIV!B:B&MSLIV!A:A&MSLIV!C:C;0))

on affiche G
en cherchant
gauche B7 dans msliv b:b
C7 dans msliv A:A
T00 dans msliv C:C

verdict ?

Oui j'ai vu mon erreur. Tu as répondu plus vite que mon ombre. Bah écoute ça fonctionne
 
Dernière édition:

st007

XLDnaute Barbatruc
Re : Aide pour une formule

Faut bien jouer de temps à autres avec sommeprod qui est fait pour additionner des nombres

pour gérer ton regroupement
 

Pièces jointes

  • Help.xlsx
    12.2 KB · Affichages: 43
  • Help.xlsx
    12.2 KB · Affichages: 46
  • Help.xlsx
    12.2 KB · Affichages: 43

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

Faut bien jouer de temps à autres avec sommeprod qui est fait pour additionner des nombres

pour gérer ton regroupement

Moauih j'ai une notion de jeu différente, le billard par exemple ! :D

Intéressant mais je préfère ton INDEX car cette possibilité implique que je nomme ma feuille de BD chaque mois. Je vais donc tester tout ceci au boulot tout à l'heure et je reviens ici.
j'ai ouvert un autre post pour en finir (j'espère) avec ce fichier de m******
 

Nessie

XLDnaute Occasionnel
Re : Aide pour une formule

J'ouvre rapidement ce post car je dois modifier ma formule pour un autre tableau.
Dans ma formule
Code:
=SIERREUR(SI(D$6=MSLIV!$C$1;INDEX(MSLIV!$I:$I;EQUIV(GAUCHE($A$7;3)&"T19";MSLIV!$B:$B&MSLIV!$C:$C;0));0);0)
, je dois faire la somme de tous les T19 que je trouverai en colonne C.

Quelle serait la syntaxe ?
 

st007

XLDnaute Barbatruc
Re : Aide pour une formule

Bonjour,
comme dit précédemment, index te renvoie la valeur d'une cellule
sommeprod fera la somme de toutes valeurs correspondantes aux critères

"je dois faire la somme de tous les T19 que je trouverai en colonne C" (correspondant à A7 aussi)

formulé comme çà, ... sommeprod .
genre SOMMEPROD((MSLIV!$B:$B=GAUCHE($A7;3)*1)*(MSLIV!$C:$C="T19")*MSLIV!$I$:$I)

ou juste T19 en colonne C
=((MSLIV!$C:$C="T19")*MSLIV!$I$:$I)
 

Discussions similaires

Réponses
10
Affichages
192
Réponses
8
Affichages
354
Réponses
4
Affichages
374

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali