Somme sous condition en macro

Résolu
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - 25 mars 2013 à 15:00
 acive - 26 mars 2013 à 16:33
Bonjour,

Quelqu'un pourrait-il m'aider svp?
J'ai un tableau quelconque avec la colonne J contenat des montants en euros.
Par le biais d'autres macro je colorie chaque ligne en fonction de ce qui est dans la colonne H (4 choix donc 4 couleurs).
J'aimerais tout simplement dans une macro, réaliser la somme des montants de la colonne J par couleur.

Merci d'avance pour votre aide

24 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 mars 2013 à 17:09
Bonjour,
J'aimerais tout simplement dans une macro, réaliser la somme des montants de la colonne J par couleur.

laisse deviner une lourdeur de conception.
Réfléchissons : Ces 4 couleurs ne sont pas attribuées spontanément, mais en fonction d'une condition, non ?*
Faire ensuite un total de valeurs sur la base de ces couleurs est un "travail" supplémentaire (source de lenteurs ajoutées) assez étrange.
Il sera bien plus rapide de faire ce total directement en fonction de la condition et non de la couleur attribuée en application de la condition !
Intéresse-toi donc à worksheetfunction.SUMIF (dans ton aide VBA), faite pour cela.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
26 mars 2013 à 09:25
Oui dans l'aide en ligne de VBA :
Liste des fonctions de feuille de calcul disponibles dans Visual Basic
(En tout cas dans ma version)

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 09:36
Toutes les fonctions de Excel utilisables depuis VBA sont des membres de l'objet WorkSheetFunction.
Il suffit donc d'ouvrir la rubrique WorkSheetFunction et d'y sélectionner la sous-rubrique Membres de l'objet WorksheetFunction. Toutes les fonctions utilisables y sont répertoriées comme "méthodes".


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
25 mars 2013 à 16:49
Comment aider sans voir le code ?

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
25 mars 2013 à 16:51
Je n'en ai aucun code,
Les autres macros sont indépendantes.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
25 mars 2013 à 16:56
Bon faut s'y mettre alors, car ici il n'y a pas de livraison clef en main !

Sinon, en testant les cellules de la même façon qu'elles sont coloriées,
une somme par couleur peut donc être calculée ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
25 mars 2013 à 17:00
C'est ce que je voulais savoir! merci pour l'info.

Je vais m'y mettre alors
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 09:17
Puisque ca à l'air de vous interesser, je détaille un peu plus.
J'ai fait une macro qui me permet dans une base de données de selectionner 1 ou plusieurs ligne et de les "MARQUER".
La ou les lignes sélectionnées sont coloriées en fonction du "type d'opération" dans la colonne H (4 choix = 4 couleur).
Dans la colonne Q "FAIT" j'inscris en meme temps que je colore la mention "oui".
Et c'est la que je pensais réaliser avec une fonction comme somme si la somme par couleur mais en y pensant en vous ecrivant, je peux peut etre réaliser mon test entre la colonne H et la colonne Q puisque si Q contient "oui" cela veut dire que ma ligne est colorée. Donc pas besoin de plus de précision pour réaliser ma somme.
Je regarde ça!

Merci pour la fonction SUMIF.
D'ailleurs existe t-il un document qui recense tout les noms de fonction utilisable en vba?
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 09:38
Merci beaucoup pour l'info!
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 09:38
Merci beaucoup pour l'info!!
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 10:03
Voilà comme j'ai écris ma macro:

Sub calculer()
Dim SommeDI, SommeOA, SommeOS, SommeMO As Double
Sheets("TABLEAU GENERAL").Activate
'******** 1er choix
SommeDI = WorksheetFunction.SumIf("H:H", "Dégâts Intempéries", "J:J")
'******** 2ème choix
SommeOA = WorksheetFunction.SumIf("H:H", "Ouvrages d'art", "J:J")
'******** 3ème choix
SommeOS = WorksheetFunction.SumIf("H:H", "Opérations Spécifiques", "J:J")
'******** 4ème choix
SommeMO = WorksheetFunction.SumIf("H:H", "Murs et Ouvrages", "J:J")
End Sub

Erreur renvoyée: incompatibilité de type

Je n'ai pas accès à l'aide en ligne
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 10:13
Je n'ai pas accès à l'aide en ligne

Hé bien : installe-là donc sans plus attendre !
On ne peut travailler sans elle ! (te viendrait-il l'idée de conduire une voiture sans son volant ? Non, hein ...)
Tu y aurais par exemple lu que le premier paramètre doit être un objet Range, ce que n'est pas "H:H" (qui est une chaîne de caractères) .

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
26 mars 2013 à 10:13
Astuce : formule de calcul saisie manuellement dans une cellule de la feuille.
Une fois qu'elle fonctionne, cellule contenant la formule sélectionnée,
dans l'environnement VBA, dans la fenêtre Exécution taper :
? activecell.formula et valider.
En dessous tu auras la formule en version anglaise exploitable donc en VBA ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 10:19
Impossible d'installer quoique ce soit sur mon poste de travail je ne suis pas administrateur (société)
j'ai donc modifié comme suit:

Sub calculer()
Dim SommeDI, SommeOA, SommeOS, SommeMO As Double
Sheets("TABLEAU GENERAL").Activate
'******** 1er choix
SommeDI = WorksheetFunction.SumIf(Range("H:H"), "Dégâts Intempéries", Range("J:J"))
MsgBox "" & SommeDI
'******** 2ème choix
SommeOA = WorksheetFunction.SumIf(Range("H:H"), "Ouvrages d'art", Range("J:J"))
'******** 3ème choix
SommeOS = WorksheetFunction.SumIf(Range("H:H"), "Opérations Spécifiques", Range("J:J"))
'******** 4ème choix
SommeMO = WorksheetFunction.SumIf(Range("H:H"), "Murs et Ouvrages", Range("J:J"))
End Sub

Maintenant je souhaite ajouter ma 2ème condition sur Range("Q:Q") et il me dit nombre d'arguments incorrect
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 10:26
1) Désolé, mais lis donc ce que j'ai écrit dans ma signature.
2)
Impossible d'installer quoique ce soit sur mon poste de travail je ne suis pas administrateur (société)

Exige
donc cette installation, que ton employeur ne saurait légalement te refuser si ton emploi prévoit des tâches de développement. Il va de soi que, dans le cas contraire, il a probablement raison de ne pas te permettre de développer sur les machines dont IL a la responsabilité.
C'est clair.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 10:42
Il a PROBABLEMENT raison. Que ferais tu alors à ma place, tu te priverais d'un outil formidable et continuerais à travailler "à la main"?
J'essaie de trouver des solutions pour améliorer mon rendement et ceux de mes collègues. Je travaille pour la fonction Publique et ce n'est pas une légende l'inertie y est immense. J'ai créé une application super pratique adaptée aux besoins de mon agence. Les autres agences n'ayant pas d'outil nt demandé sous mon impulsion qu'on développer mon outil à tout le monde. Cela n'a pas plus au service informatique qui à dépensé plusieurs milliers d'euros pour acheter un logiciel hyper sophistiqué et donc plus du tout adapté aux besoins des agences mais c'est eux qui ont raison... Alors je me vois mal leur demander de m'installer des logiciels de développement. ALors je continue avec mon brave excel et mon livre VBA pour les nuls et ce forum génial.

Pour info j'ai trouvé la solution: une boucle FOR pour balayer la colonne Q et une boucle if pour tester la valeur.

Merci pour votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 11:05
Il a PROBABLEMENT raison. Que ferais tu alors à ma place, tu te priverais d'un outil formidable et continuerais à travailler "à la main"?

Ce que je sais, c'est que je ne ferai rien sans son aval, son autorisation et ... ses outils, alors, hein !
Ne serait-ce que pour ne pas me risquer de me retrouver devant une commission de discipline (pour ton info : j'y ai participé plus d'une fois, en représentation de mes collègues. Un cas comme celui-ci n'appelait aucune défense de ma part. Alors : prends tes risques, si tu veux, mais n'en fais pas une "morale" autre que la tienne seule... ).
Voilà voilà. Cela s'arrête là en ce qui me concerne.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 11:41
Et je te rappelle l'existence du Comité Technique Paritaire (je crois que son appellation est devenue aujourd'hui simplement "Comité Technique").
Si tu penses réellement tout ce que tu as dit de l'outil "sophistiqué" et que les "verrues" que tu veux y ajouter sont de nature à améliorer les choses, c'est là, qu'il te faut attaquer, avancer tes arguments, etc ... en vue d'obtenir les modifications et/ou ajouts que tu estimes utiles. Et pas comme tu le fais ("en douce" ou "dans le dos").
Tu peux donc demander à y être présent en qualité d'expert (c'est le terme consacré).
Mais tout cela te regarde.
Ce qui regarde ce forum, par contre, c'est que tu veuilles y voir un substitut de l'aide non installée, y compris pour des choses simples et qui y sont parfaitement exposées.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 mars 2013 à 11:48
Alors je m'excuse d'utiliser le forum contre nature!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2013 à 11:53
Non. Ne t'excuse pas, puisque tu n'as pas commis de faute à l'égard de ce forum.
Cela ne change toutefois rien au fondement : installation de l'aide indispensable.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous