Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2051 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sommes multi-conditionnelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sommes multi-conditionnelle

n°1802229
darknewbie​31
Posté le 20-10-2008 à 09:41:16  profilanswer
 

Bonjour,
 
Je suis en première anné de BTS informatique, n'ayant jamais fait de VBA et mon entreprise m'en ayant donner a faire, je reste un peu coincé sur quelque point.
 
Mon classeur se compose de plusieurs feuille, seul 2 m'intéresse pour le calcul de la formule sur laquelle je bloque.
La première feuille un un simple tableau avec 3 colonnes qui m'intéresse, la deuxième feuille doit reprendre ce tableau et en faire un bilan afin de l'analyser.
Voici mon tableau :
_____________________________
|    Activité   |   Valeurs   |   type   |
|---------------------------------|
|       A1          |      20      |     A      |
|       A1          |      10      |     B      |
|       A1          |      2        |     C      |
|       A2          |       0       |     D      |
|       A1          |      50      |     A      |
|___________|________|_______|
 
Je souhaite calculer le nombre de "Type" qui sont egal a A pour "l'activité" A1(sachant que celle-ci n'est pas toujours A1)
Je souhaite aussi additionner les "Valeurs" correspondant a chaque Type qui ont A1 pour activité (adition des "Valeurs" du nombre trouver précédament)
Ce qui donne par exemple pour l'activité A1 :  
Il y a 2 Type A pour cette activité et 70valeurs de type A(50+20)
 
Voici la formule que j'avais entrer, j'ai surement fait une erreur d'ecriture, mais je ne voit pas laquel.

Code :
  1. Range("J5" ).FormulaR1C1 = "=SUM(IF('" & Sheets(a).Name & "'!E4:E500="A1",IF('" & Sheets(a).Name & "'!I4:I500="A",1,0),0))"


 
Merci d'avance


Message édité par darknewbie31 le 22-10-2008 à 08:41:37
mood
Publicité
Posté le 20-10-2008 à 09:41:16  profilanswer
 

n°1802670
darknewbie​31
Posté le 21-10-2008 à 08:58:26  profilanswer
 

Personne n'aurais d'idée pour m'aider ?

n°1803033
darknewbie​31
Posté le 22-10-2008 à 08:35:27  profilanswer
 

En faite le principe serait bon, la formule comporterais juste une erreure et planterais le code, mais je ne voit pas d'ou ca peux venir.

Code :
  1. Range("J5" ).FormulaR1C1 = "=SUM(IF('" & Sheets(a).Name & "'!E4:E500="A1",IF('" & Sheets(a).Name & "'!I4:I500="A",1,0),0))"

n°1803051
seniorpapo​u
Posté le 22-10-2008 à 10:03:08  profilanswer
 

Bonjour,
 
    Range("j5" ).Select
     
    formi = "=SUMPRODUCT(((e1:e5)= ""A1"" )*((i1:i5)=""A"" ))"
    ActiveCell.Formula = formi
 
    Range("j6" ).Select
    formi = "=SUMPRODUCT(((e1:e5)= ""A1"" )*((i1:i5)=""A"" )* (b1:b5))"
    ActiveCell.Formula = formi

n°1804979
darknewbie​31
Posté le 27-10-2008 à 14:12:37  profilanswer
 

Merci, cela marche très bien, cependant j'ai une petite question,
Je désir, dans un autre tableau reprendre cette formule et rajouter une argument qui sélectionnerais uniquement la valeurs correspondant au mois de janvier de l'année en cours.
je pensais a :

Code :
  1. =SOMMEPROD((('Accidents 2004'!$A$4:$A$500)="01/01/2008" )*(('Accidents 2004'!$E$4:$E$500)= "Escale" )*(('Accidents 2004'!$I$4:$I$500)="TO" ))


Mais aucun résultat, aurais-tu une idée ?

n°1805058
seniorpapo​u
Posté le 27-10-2008 à 17:04:14  profilanswer
 

Bonsoir,
essayer  avec DATEVAL("01/01/2008" )

n°1805372
darknewbie​31
Posté le 28-10-2008 à 11:17:41  profilanswer
 

En faite, je souhaite afficher la mois suivant par rapport a la cellule qui est a gauche.
Pour cela j'ai trouver la fonction "mois.decaler" mais elle ne semble pas marcher dans les macro.
 
Pour ensuite utiliser la date de cette cellule dans ma formule pour le dateval.
 
Voila un petit exemple :
+---------------------------+
| Janvier 2008 | Fevrier 2008 |
|----------------------------|
| Valeur A       | Valeur B       |
+----------------------------+
 
La valeur A est :

Code :
  1. =SOMMEPROD((('Accidents 2004'!$A$4:$A$500)="Janvier 2008" )*(('Accidents 2004'!$E$4:$E$500)= "Escale" )*(('Accidents 2004'!$I$4:$I$500)="TO" ))


 
Idem pour la valeur B mais pour fevrier 2008.

n°1805614
seniorpapo​u
Posté le 28-10-2008 à 18:34:39  profilanswer
 

Bonsoir,
je n'ai pas tout compris, mais voici une formule qui permet de générer tes dates.  
 
=DATE(ANNEE(A1);MOIS(A1)+1;JOUR(A1))
A mettre en B1 puis étendre, le format des cellules de la ligne 1 devant être un format date personnalisé:  mmmm aaaa
ton somme....devient:
=SOMMEPROD((('Accidents 2004'!$A$4:$A$500)=A1 )*(('Accidents 2004'!$E$4:$E$500)= "Escale" )*(('Accidents 2004'!$I$4:$I$500)="TO" ))

Message cité 1 fois
Message édité par seniorpapou le 28-10-2008 à 18:37:50
n°1806354
darknewbie​31
Posté le 30-10-2008 à 14:12:33  profilanswer
 

seniorpapou a écrit :


=SOMMEPROD((('Accidents 2004'!$A$4:$A$500)=A1 )*(('Accidents 2004'!$E$4:$E$500)= "Escale" )*(('Accidents 2004'!$I$4:$I$500)="TO" ))


Cette formule me renvoi un "#nom?" je ne comprend pas.
Alors que si je rentre la formule moi même (au lieu de le faire en macro) elle marche.
 
En revanche, quand on met =A1 ca veut dire la même date que en A1, or il me faudrait seulement le même mois et la même année, dois-je utiliser une double égalité ? (> et < ) ou y a t-il une aiutre astuce plus simple ?


Message édité par darknewbie31 le 30-10-2008 à 14:20:58
n°1806540
seniorpapo​u
Posté le 30-10-2008 à 17:54:00  profilanswer
 

=SOMMEPROD((format(('Accidents 2004'!$A$4:$A$500);"mmmm aaaa" )=format(A1;"mmmm aaaa" ) )*(('Accidents 2004'!$E$4:$E$500)= "Escale" )*(('Accidents 2004'!$I$4:$I$500)="TO" ))
 
sans garantie pace pas testé


Message édité par seniorpapou le 30-10-2008 à 17:54:29
mood
Publicité
Posté le 30-10-2008 à 17:54:00  profilanswer
 

n°1806741
darknewbie​31
Posté le 31-10-2008 à 08:40:43  profilanswer
 

Ne semble pas marcher, renvoie un "#nom?", decidement je comprend vraiment pas :p
Je vais me pencher sur cette formule, qui me semble idéale pour mon problème, il doit forcement y avoir une solution.

n°1806747
seniorpapo​u
Posté le 31-10-2008 à 09:07:24  profilanswer
 

bonjour,
peux-tu mettre un "échantillon" de ton xls sur cjoint.com, ce qui me permettra de tester dans des conditions proches de la réalité?
Merci
 
désolé, format n'est pas possible
 
=SOMMEPROD((ANNEE(($A$4:$A$500) )=ANNEE(A1 ) )*(MOIS(($A$4:$A$500) )=MOIS(A1 ) )*(($E$4:$E$500)= "Escale" )*(($I$4:$I$500)="TO" ))
 
tu ajoutes la référence à ta feuille que j'ai supprimée pour tester


Message édité par seniorpapou le 31-10-2008 à 09:20:58
n°1806803
darknewbie​31
Posté le 31-10-2008 à 11:13:27  profilanswer
 

Ta formule renvoi a nouveau un "#nom?" mais si je tape entrer sous excel, elle est revalidé et cette fois elle marche.
Y-aurait-il un problème de "comprehension" entre ma macro et excel ?
 
Je ne peux malheuresement pas fournir l'echantillion a cause des restriction reseaux, en revanche, voici un extrait de ma macro :

Code :
  1. Sub Nwmnth()
  2. 'On selectionne le mois a metre en archive
  3. Worksheets("12 mois" ).Activate
  4. Range("AA3" ).Value = "=SOMMEPROD((ANNEE(('Accidents 2008'!$A$4:$A$500))=ANNEE(AA1))*(MOIS(('Accidents 2008'!$A$4:$A$500))=MOIS(AA1))*(('Accidents 2008'!$E$4:$E$500)=""Pays de la Loire"" )*(('Accidents 2008'!$I$4:$I$500)=""TO"" ))"
  5. Sheets(1).Select
  6. End Sub


 
Edit : J'ai trouver, en faite il me faut mettre toute mes fonctions en anglais (Mois=>Month etc ...)
Mais je ne comprend pas pourquoi en francais cela ne marche pas dans ma macro.


Message édité par darknewbie31 le 31-10-2008 à 13:02:42
n°1806899
seniorpapo​u
Posté le 31-10-2008 à 13:11:50  profilanswer
 

les mystères de l'informatique......
l'essentiel étant de ne pas l'oublier  
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sommes multi-conditionnelle

 

Sujets relatifs
TOMCAT en PHP - Utiliser sockets en multi-connexionsMoteur de recherche multi-critère
[VBA / ACCESS] ajouter à une liste multi-valuéeBoost programmation multi core
[RESOLU]Mise en forme conditionnelle 15 condition / différente cellule[SQL] requéte multi table
Site Multi-Langues....Comment procéder ?Multi-utilisateur sur phpmyadmin avec base distinct
Connexion base de données multi-tablesWinRar Compression multi-parties
Plus de sujets relatifs à : Sommes multi-conditionnelle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR