formule excel

formule excel - VB/VBA/VBS - Programmation

Marsh Posté le 15-09-2010 à 14:23:35    

Bonjour à tous
 
je suis à la recherche de quelqu'un qui pourait m'aidé à rediger cette formule car je bloque, merci d'avance.
 
RECHERCHE si dans une colonne de nom il se trouve une refférence X, si la référence X apparée devant un ou plusieur jour du mois de JANVIER de la colonne DATE, additionnez toutes les célule d'une troisieme colonne corréspondant aux critére demandé.
 
Bonne journée.        
       
       

Reply

Marsh Posté le 15-09-2010 à 14:23:35   

Reply

Marsh Posté le 15-09-2010 à 16:27:11    

si on doit t'aider, quelle est ta proposition ? tu en es ou ?

 

Si j'ai bien compris, tu as un truc du style :

Code :
  1. nom   |   date     |    val
  2. --------------------------------
  3. test  |  JANVIER   |  120
  4. toto  |  JANVIER   |   80
  5. titi  |   FEVRIER  |   10
  6. tata  |   JANVIER  |   20
  7. toto  |   FEVRIER  |   200
  8. toto  |   JANVIER  |   140
  9. toto  |   MARS     |   10
 

Si tout est clair, ici, par exemple, ta reference est la colonne Nom, la date est date et tu cherches à additionner les valeurs de la colonne val.
C'est bien ca ?

 

Donc, encore par exemple, avec la formule pour la reference toto au mois de janvier, tu dois obtenir : 220.
tjs ca hein ?

 


concrètement, un somme.si combiné à une formule matricielle et ca roule :)


Message édité par gocho le 15-09-2010 à 16:37:27
Reply

Marsh Posté le 16-09-2010 à 13:55:46    

Bonjour gocho
Dans la colonne date se sont des dates et non des mois pour l'annnée j'ais trouvé mais chaques nom est representé plusieur fois dans chaques mois c'est se qui me bloque car j'ais troix ligne de valeur à mêtre en correspondance.
 
Merci

Reply

Marsh Posté le 16-09-2010 à 14:00:33    

gocho
 
un somme.si OK une feuille matricielle?

Reply

Marsh Posté le 16-09-2010 à 15:21:11    

Voila en gros se que je cherche et qui ne marche pas!
 
SOMME.SI(SI (A:A;NOM);$B$1:$B$64732;DATE;$E$1:$E$64732)
               colonne NOM      colonne date          colonne de resultats
                                                 

Reply

Marsh Posté le 16-09-2010 à 16:02:48    

Oui, formule matricielle.
C'est un type de formule à valider par Ctrl+shift+entrée.

 

Concrètement, pour récupérer la bonne valeur au dessus, voici la formule que j'ai utilisé. Tu devrais aisément pouvoir l'adapter à ton cas (notamment pour les mois)

 
Code :
  1. {=SOMME(SI((nom="toto" )*(date="JANVIER" );val;0))}
 

ps : les accolades ne sont pas à écrire dans la formule, elles se mettent automatiquement lorsque tu valide avec ctrl+shift+entrée.

 

ps2 : J'avais nommé les différentes plages, ce sont les noms "nom", "date" et "val". Si tu n'as pas nommé de plages, tu peux utiliser les plages habituelles "A1:A8", etc.

 

ps3 : pour ce qui est du mois, ca devrait être un truc de type

Code :
  1. (MOIS(date)="04" )
 

la fonction MOIS() te récupérant uniquement le numéro du mois de la cellule indiquée.


Message édité par gocho le 16-09-2010 à 16:06:37
Reply

Marsh Posté le 16-09-2010 à 21:09:54    

cette formule fonctionne mais elle me renvoi un resultat qui est fossé par le format de la date et j'ais tenté toute les formes que je connaissé :(
 
{=SOMME(SI((colonne nom="nom" );(colonne date=date);colonne resulta))}

Reply

Marsh Posté le 16-09-2010 à 21:29:31    

SA MARCHE, mais que sur une date et pas sur un groupe de dates.
Si sur une année je ne sélectionne que quelques dates qui se suivent sa ne marche pas.
 
{=SOMME(SI((colonne nom="nom" )*(colonne date=date);colonne resultat))}

Reply

Marsh Posté le 16-09-2010 à 22:07:31    

déjà, tu as supprimé le ";0" qu'il y avait à la fin de mon exemple.
Je sais plus s'il est fondamental, mais dans le doute, laisse le :o

 

Ensuite, comment ca, ca ne fonctionne pas sur un groupe de dates?
Donnes des exemples concrets, c'est plus parlant.


Message édité par gocho le 16-09-2010 à 22:11:24
Reply

Marsh Posté le 16-09-2010 à 22:47:58    

En fait si tu prend pex la date du jour (dates1) et uniquement celle-ci sa fonctionne, par contre si tu prend (dates1:3) sa ne marche pas!
  dates
1 16/09/2010
2 17/09/2010
3 18/09/2010
 
le ";0" n'est apparement pas fondamental sauf si les colonnes sont vides.
je viens de faire 3 feuilles de 12 mois et tous les résultats sont justes. :)

Reply

Marsh Posté le 16-09-2010 à 22:47:58   

Reply

Marsh Posté le 17-09-2010 à 10:00:21    

Ah, si tu souhaites prendre plusieurs dates, va falloir rajouter un critère

 

Par exemple :

Code :
  1. =SOMME(SI((nom="toto" )*(DATEVAL(date)<=DATEVAL("17/1/2010" ))*(DATEVAL(date)>DATEVAL("13/01/2010" ));val;0))
 

Avec cette formule, tu vas récupérer la somme de toutes les refs "toto" aux dates comprises entre le 14 et le 16/01/2010.

 

Attention quand même, pour que la fonction dateval() fonctionne sur tes dates, il faut qu'elles soient au format texte.


Message édité par gocho le 17-09-2010 à 10:03:27
Reply

Marsh Posté le 18-09-2010 à 15:43:30    

bonjour,
3 autres solutions (En fait c'est la même déclinée dans ses trois variantes).
 
Très souple. On pourrait sans problème ajouter une quatrième condition...
...Mais les deux premières variantes ne supportent aucun "trou" dans les colonnes.
 
la démo
A+

Reply

Marsh Posté le 18-09-2010 à 19:15:12    

C'est pas faux.
J'ai furieusement tendance à oublier Sommeprod(), alors que je l'ai pas mal utilisé ^^

 

edit : a ce sujet, une fonction que je ne peux pas utiliser au travail (puisqu'étant sur excel 2000, la formule est apparue sur les versions suivantes) mais qui devrait fonctionner facilement aussi :

Code :
  1. somme.si.ens(plage_a_sommer;plage_criteres_1;critere1[;plage_critere2;critere2])
 

C'est l'équivalent de la solution que j'ai donné plus haut, mais standardisé. On se passe du côté "matriciel" (bien que ca doive être géré comme tel par excel derrière)


Message édité par gocho le 18-09-2010 à 19:20:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed