Formule à améliorer

  • Initiateur de la discussion Fermo
  • Date de début
F

Fermo

Guest
Bonsoirà Tous et forum,


Pouvez vous m'indiquer comment faire pour que cette formule, recherche dans M5 par exemple un chiffre et qu'elle regarde en C5 , quel est la date exemple 01.janvier .2004 et si février alors mettre en M30.



=SI(ESTVIDE(RechercheStat!M5);"";RechercheStat!M5)


Merci pour votre aide Fermo
 
M

Monique

Guest
Bonjour,

Je n'ai pas vu ton message, hier.
En copiant collant la formule du post d'hier, ça fonctionne.
(je l'ai collée en AB61)
Deux possibilités pour que ne marche pas :
1 ) Elle est à valider en matriciel, par ctrl, maj et entrée
(pour janvier, c'était la même chose)
2 ) En AB 60, le titre "Réf" n'est pas du texte.
C'est un format de nombre, cette cellule a la valeur 0 (zéro)
Format de la cellule : "Réf"
Dans la formule en AB 61, tu as :
(E$61:Y$96>AB60)
puis ligne suivante (E$61:Y$96>AB61)
Si AB60 est du texte, le résultat de la formule est "", donc cellule vide
Je pense que c'est cette 2è possibilité qui fait que ta formule ne fonctionne pas.
 
F

fermo

Guest
Bonsoir à tous et Forum,

Et à Monique, notre magicienne des formules...

J'aurais besoins de votre aide pour résoudre un nouveau problème pour moi.

En effet, Monique m'avais proposé cette formule qui fonctionne très bien, mais comme mon classeur devient de plus en plus grand, j'aimerais le dissocier en deux classeurs, 1 gestion etc., et l'autre recherche et stat.

Comment ajouter la formule ci dessous pour quelle fonctionne avec la deuxième ?

1 ='[Copie de Prog STRATEX.xls]RechercheStat'!

(qui est dans l'un des classeurs) avec la formule ci dessous qui fonctionne normalement dans le même classeur ?


2 =SI(NB(D$12:D12)>=SOMMEPROD((MOIS(Date)=MOIS($C$12))*(ANNEE(Date)=ANNEE(C$12)));"";LIGNES(D$13:D13))


Merci pour votre réponse et compétences Fermo
 
M

Monique

Guest
Bonjour,

Celle-ci fonctionne :
=SI(NB(D$12:D12)>=SOMMEPROD((MOIS('Copie de Prog STRATEX.xls'!Date)=MOIS($C$12))*(ANNEE('Copie de Prog STRATEX.xls'!Date)=ANNEE(C$12)));"";LIGNES(D$13:D13))

Il y a des apostrophes parce que le nom de ton fichier comporte des espaces.
Le mot "Date" se met tout seul si tu sélectionnes la plage nommée "Date"
et le nom de la feuille devient inutile.

Si on écrit la formule "à la main", sans sélectionner la plage entière "Date", ça donne ça :
=SI(NB(D$12:D12)>=SOMMEPROD((MOIS('[Copie de Prog STRATEX.xls]RechercheStat'!$C$5:$C$500)=MOIS($C$12))*(ANNEE('[Copie de Prog STRATEX.xls]RechercheStat'!$C$5:$C$500)=ANNEE(C$12)));"";LIGNES(D$13:D13))
 
F

fermo

Guest
RE bonjour Monique et Forum,

Je suis désolé de devoir à nouveau te déranger, mais je n'arrive pas à trouver la subtilité pour adapter ces 3 formules qui est la suite de celle que tu m'as déjà corrigé.

'Copie de Prog STRATEX.xls'

=SI($D13="";"";SOMMEPROD((ANNEE(Date)=ANNEE($C$12))*(MOIS(Date)=MOIS($C$12))*(NB=$D13);INDIRECT(E$12)))


=SI($D13="";"";SOMMEPROD((ANNEE(Date)=ANNEE($C$12))*(MOIS(Date)=MOIS($C$12))*(NB=$D13);DECALER(INDIRECT(DECALER(F$12;;-1));;1)))


=SI($D13="";"";SOMMEPROD((ANNEE(Date)=ANNEE($C$12))*(MOIS(Date)=MOIS($C$12))*(NB=$D13);DECALER(INDIRECT(DECALER(G$12;;-2));;4)))

Merci pour ta réponse Fermo
 
M

Monique

Guest
Re,

Tu procèdes de la même manière.
Tes 3 formules, dans le même ordre :
=SI($D13="";"";SOMMEPROD((ANNEE('Copie de Prog STRATEX.xls'!Date)=ANNEE($C$12))*(MOIS('Copie de Prog STRATEX.xls'!Date)=MOIS($C$12))*('Copie de Prog STRATEX.xls'!Nb=$D13);INDIRECT(E$12)))

=SI($D13="";"";SOMMEPROD((ANNEE('Copie de Prog STRATEX.xls'!Date)=ANNEE($C$12))*(MOIS('Copie de Prog STRATEX.xls'!Date)=MOIS($C$12))*('Copie de Prog STRATEX.xls'!Nb=$D13);DECALER(INDIRECT(DECALER(F$12;;-1));;1)))

=SI($D13="";"";SOMMEPROD((ANNEE('Copie de Prog STRATEX.xls'!Date)=ANNEE($C$12))*(MOIS('Copie de Prog STRATEX.xls'!Date)=MOIS($C$12))*('Copie de Prog STRATEX.xls'!Nb=$D13);DECALER(INDIRECT(DECALER(G$12;;-2));;4)))

Avec Indirect, je crois que les 2 classeurs doivent être ouverts, mais je n'en suis pas sûre.
J'ai fermé "Copie de Prog etc.xls" et ça fonctionnait.
Rien à voir : tu devrais donner un nom plus court à ton classeur, et sans espaces.
 
F

fermo

Guest
Re

J'ai essayé les deux solutions ci dessous et ça me donne l'erreur #REF ?

As tu une solution ?

=SI($D13="";"";SOMMEPROD((ANNEE([ProgSTRATEX.xls]RechercheStat!$C$5:$C$5000)=ANNEE($C$12))*(MOIS([ProgSTRATEX.xls]RechercheStat!$C$5:$C$5000)=MOIS($C$12))*([ProgSTRATEX.xls]RechercheStat!$D$5:$D$500=$D13);INDIRECT(E$12)))



=SI($D13="";"";SOMMEPROD((ANNEE('ProgSTRATEX.xls'!Date)=ANNEE($C$12))*(MOIS('ProgSTRATEX.xls'!Date)=MOIS($C$12))*('ProgSTRATEX.xls'!Nb=$D13);INDIRECT(E$12)))

A + Fermo
 
M

Monique

Guest
Re,

La 1ère fonctionne, à condition que toutes tes plages aient la même longueur.
Tu as, dans la formule de ton message, 4 plages parallèles (3, en fait) mais de longueur inégale :
C5:C5000
C5:C5000
D5:D500
Indirect(E12)
INDIRECT(E12) fait référence à la plage nommée "NoArticleA"
Si cette plage va de la ligne 5 à la ligne 500, toutes les autres plages de ta formule devront en faire autant.
Si elle va jusqu'à la ligne 5000, les autres devront avoir la même longueur.

La 2è formule fonctionne bien chez moi, à peine collée, elle a donné le bon résultat.
Mais, dans ton message, c'est bizarre qu'elle ait des apostrophes.
S'il n'y a plus d'espaces dans le nom du classeur, il n'y a plus d'apostrophes dans la formule.
En collant ta formule dans mon classeur, elle a perdu ses apostrophes.
Et si je les remets, Excel refuse.
(la 2è est mieux, quand même)
Sinon, pour la 2è, idem : est-ce que toutes les plages nommées ont la même longueur ?
 
F

fermo

Guest
Re,

J'ai mis toutes les conditions à 5000. enregistrer, mais rien ne fait celà me donne toujours #ref ???

Serais tu d'accord je te t'envoie les deux classeurs à ton adresse E-mail...
Il serait trop grand pour le Forum, ou as tu une autre solutions...

=SI($D13="";"";SOMMEPROD((ANNEE(ProgSTRATEX.xls!Date)=ANNEE($C$12))*(MOIS(ProgSTRATEX.xls!Date)=MOIS($C$12))*(ProgSTRATEX.xls!NB=$D13);INDIRECT(E$12)))
 
M

Monique

Guest
Re,

Tu as aussi à mettre à 5000 toutes les plages qui sont "appelées" par la fonction Indirect :
INDIRECT(E12) INDIRECT(H12) INDIRECT(K12) INDIRECT(N12) INDIRECT(Q12) INDIRECT(T12) INDIRECT(W12)
Il y a quelques mois, elles s'appelaient
NoArticleA NoArticleB NoArticleC NoArticleD NoArticleE NoArticleF NoArticleG
Et puis toutes les autres : Nb, Date, NbAn, NbParClient, etc

Ta dernière formule fonctionne chez moi, ça doit être 1 plage qui n'a pas la bonne longueur.

D'accord pour recevoir tes fichiers (zippés) si tu ne réussis pas.
(je ne ferai pas ça ce soir)
 

Discussions similaires

Réponses
2
Affichages
185
Réponses
13
Affichages
582

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1