Faire un total sans sous-totaux

Résolu
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je vous expose mon problème :

Je souhaite faire un total de la colonne I, en excluant les lignes de sous-total.
J'ai utilisé plusieurs formules, mais je n'obtiens jamais le résultat jusque là.
Voici mon Code :
ThisWorkbook.Sheets("basequantitatif").Activate
Range("base_totbac").Select
Selection.Copy
ThisWorkbook.Sheets("Estimatif BAC").Activate
ActiveSheet.Paste
ActiveCell.Offset(0, 0).Select
ActiveCell.Offset(0, 8).Formula = "=WorksheetFunction.SumIf(Range(B6:B800), " <> " & ""sous total"", Range(I6:I800)) "
ActiveCell.Offset(1, 0).Select


J'espère que vous aurez une solution à m'apporter

Faites jouer vos super pouvoirs !

Merci beaucoup
A voir également:

9 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Pourquoi ne pas utiliser plutôt la fonction sous.total ?
- en renvoyant la formule
Range("B22").FormulaLocal = "=SOUS.TOTAL(9;B1:B20)"
- en renvoyant la valeur
Range("B24").Value = Application.WorksheetFunction.Subtotal(9, Range("B1:B20"))

http://www.cjoint.com/c/GDEp6qcQ8D8

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je te remercie pour ta reponse ccm81.

C'est que ma macro ne contient pas de fonction sous total, en fait il s'agit simplement d'une ligne qui vient s'ajouter si plusieurs éléments identiques se suivent.

C'est pourquoi j'ai utilisé la fonction sumif, pour qu'il utilise en critère le texte.

Est ce que la macro entière t'aiderai à mieux me comprendre ?

Merci encore
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Peux tu envoyer la partie concernée de ton fichier,sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je me sens pas trop de couper ma macro, je te l'envoie. Il s'agit de la feuille estimatif et la macro estimatif, tu ne peux pas te tromper !
J'ai mis un petit code couleur pour te signaler les éléments en question.
Cette feuille importe les éléments à partir d'autres feuilles que je t'ai mises si tu veux la lancer

http://www.cjoint.com/c/GDEsFHPX6du

Par ailleurs dans la macro, il doit bien y avoir quelques petites choses qui ne vont pas, je suis novice dans ce domaine, j'apprends encore
.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Essaies peut être quelque chose comme ceci

Dim f As String
f = "=SOMME.SI(A1:A20; ""<>"" & ""sous total"" ;D1:D20)"
Range("D24").FormulaLocal = f

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai deja essayé cela, mais il n'en veut pas.
Dans ce cas, il me met une erreur.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Sur celui ci, ça fonctionne
http://www.cjoint.com/c/GDEsN5pVfs8
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je l'ai appliqué;
Sur ma macro, ca affiche VRAI, et pas la valeur.
C'est dû à un réglage ?
0

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

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Essaies ceci avec ta macro

Dim f As String
f = "=sumif(B6:B800, ""<>"" & ""sous total"", I6:I800)"
ActiveCell.Offset(0, 8).Formula = f

http://www.cjoint.com/c/GDEtLieeNc8

RQ. Vérifies que dans ta feuille le mot "sous total" est bien écrit sans espace devant et derrière

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Alors cela m'affiche toujours VRAi..
Si je mets deux guillements : ""<>"", il me demande NOM?

ThisWorkbook.Sheets("basequantitatif").Activate
Range("base_totbac").Select
Selection.Copy
ThisWorkbook.Sheets("Estimatif BAC").Activate
ActiveSheet.Paste
ActiveCell.Offset(0, 0).Select
Dim tst As String
tst = "=WorksheetFunction.SumIf(Range(B6:B800), " <> " & ""sous total"", Range(I6:I800)) * 2.5"
ActiveCell.Offset(0, 8).Formula = tst


Je dois t'avouer que je ne comprends pas vraiment ce que signifie ce VRAI, je pensai qu'avec .Formula, il affichait la valeur.

Merci Encore pour ton aide et ton temps !
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
1. je pensai qu'avec .Formula, il affichait la valeur.
non ! .Formula renvoie une formule excel
dans ce code f est une formule, en fait le texte (type string) de la formule qui sera inscrite dans la cellule excel
Dim f As String
f = "=sumif(B6:B800, ""<>"" & ""sous total"", I6:I800)"
ActiveCell.Offset(0, 8).Formula = f

2. Si tu veux renvoyer une valeur, c'est .Value qui te faut utiliser, et le code n'est plus le même.
Application.WorksheetFunction.SumIf fait appel à la fonction excel SOMME.SI et utilise les plages "vba" Range(...)
tst = Application.WorksheetFunction.SumIf(Range("B6:A800"), "<>" & "sous total", Range("I6:I800")) * 2.5 
ActiveCell.Offset(0, 8).Value = tst

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ccm81,
Ta dernière solution me donne un résultat 0.00, jusque là j'utilisai .Formula dans mes lignes de code, et c'est la premiere fois que ça refuse de calculer.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Ta dernière solution me donne un résultat 0.00, jusque là j'utilisai .Formula dans mes lignes de code, et c'est la premiere fois que ça refuse de calculer.
ça ne refuse pas de calculer puisque tu trouves 0.00, par contre, il doit y avoir un problème ailleurs

Mon exemple avec tes plages (version formule et version valeur)
http://www.cjoint.com/c/GEburaEm1e8

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Salut ccm81,
Je pense que l'erreur vient du fait qu'il cherche la valeur de la cellule ù doit s'afficher le total, aussi que penses tu de :
ActiveCell.Offset(0, 8).Formula = "= Sum(I7:ActiveCell.Row - 1) - SumIf(B7:ActiveCell.Row-1,""sous total"",I7:ActiveCell.Row-1)"


ou de
ActiveCell.Offset(0, 8).FormulaR1C1 = "=Sum(R" & 7 & "C:R" & ActiveCell.Row - 1 & "C) - SumIf(C[-6]:R" & 7 & "C,""sous total"",R" & 7 & "C:R" & ActiveCell.Row - 1 & "C)"


Le souci est que ça rest 0.00, je ne sais pas d'où vient le problème. Lorsque je sépare les formules, elles se calculent très bien. Mais impossible jusque là de les assembler

En te remerciant pour ton retour,
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
1. Il y a déjà un problème ici
Sum(I7:ActiveCell.Row - 1)
I7:ActiveCell.Row - 1 ne définit pas une plage (il manque la colonne après le ":"

2. J'ai trouvé ton fichier plus haut (évites de répondre en Commentaire, ça ne met pas le message en fin de post )
J'ai essayé de comprendre ce que tu veux faire
Pour des raisons de taille de fichier, le fichier joint ci-dessous, ne contient QUE la feuille Estimatif BAC sans ses formules
http://www.cjoint.com/c/GEcmHlCNvQ8
J'ai choisi le double clic pour lancer la macro, mais on peut la lancer autrement bien sûr
Pour tester, tu insères des lignes avant la ligne total puis clic-clic sur la cellule total, tu devrais voir la formule évoluer
Si ça te convient, il te suffit de copier la macro dans le module de la feuille Estimatif BAC de ton fichier
Sinon, il faudra expliquer davantage

3. RQ. Tu peux quand même te passer de macro, il suffit de garder une ligne vide de service avant la ligne total (ici garder la ligne 83 vide) et d'insérer des lignes avant celle ci, la formule suivra.

Cdlmnt
0
Marie.Cherie Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Tu es mon héros !

Problème résolu, je te remercie énormément !
Je n'aurai pas pensé à cela.
0