Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Excel SUMIF

  • Initiateur de la discussion Initiateur de la discussion gb00000
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gb00000

Guest
Bonjour,

J'aimerais faire une formule somme.si avec VBA qui irait du début d'un tableau selon une plage prédéterminée et qui se rend jusqu'à la fin selon jusqu'où va le tableau.

Comme vous voyez mon critère est "c" et se trouve dans la colonne C et mes chiffres à sommer, en fonction dudit critère, sont dans la colonne D

La formule à la fin devrait ressembler à ceci:
=SOMME.SI(C7:C22;"c";D7: D22)

À la fin j'ai ajouté un espace volontairement avant le D pour éviter que ça fasse un smiley dans: "D7; D"


Voici ce que j'ai tenté de faire mais que ne fonctionne pas et je ne sais pas pourquoi:
Range("H6") = "SUMIF(C7:C" & Range("C7").End(x1Down).Row & ";" & Chr(34) & "c" & Chr(34) & ";D7: D" & Range("D7").End(x1Down).Row & ")"

Ici aussi le truc du "D7; D", le "Pas d'icône" est pourtant coché en bas...

Mon but est entre autre de pouvoir voir la formule dans la case à la fin et non d'avoir un chiffre qui semble "pluggué"

Si quelqu'un arrive à m'aider, un gros merci d'avance. Je ne suis pas un super pro de VBA alors croyez moi j'ai gossé longtemps là dessus avant de venir dans un forum.

Merci
 
Dernière modification par un modérateur:
Re : VBA Excel SUMIF

Bonjour gb00000 et bienvenue sur le forum,

Voici 2 propositions qui devraient fonctionner.
Note que mon système est en anglais, donc les séparateurs sont des , au lieu des ; dans les formules.
À ajuster au besoin.

Code:
ActiveSheet.Range("H6") = Application.SumIf(Range("C7:C2" & Range("C60000").End(xlUp).Row), "c", Range("D7:D2" & Range("D60000").End(xlUp).Row))
ActiveSheet.Range("H6").Formula = "=sumif(C7:C" & Range("C60000").End(xlUp).Row & ", ""c"",D7:D2" & Range("D60000").End(xlUp).Row & ")"

A+
 
Re : VBA Excel SUMIF

Bonjour gb00000, Grand Chaman Excel,

Avec la propriété Formula, il faut toujours la syntaxe anglaise.

Si l'on veut utiliser la syntaxe française (pour Excel version française), utiliser la propriété FormulaLocal.

A+
 
Re : VBA Excel SUMIF

Re,

Grand Chaman Excel a laissé trainer des 2 de trop, je corrige :

Code:
ActiveSheet.Range("H6") = Application.SumIf(Range("C7:C" & Range("C60000").End(xlUp).Row), "c", Range("D7:D" & Range("D60000").End(xlUp).Row))

ActiveSheet.Range("H6").Formula = "=sumif(C7:C" & Range("C60000").End(xlUp).Row & ", ""c"",D7:D" & Range("D60000").End(xlUp).Row & ")"
A+
 
Re : VBA Excel SUMIF

Bonjour

Une autre façon d'écrire pour un même résultat
Code:
Dim dl As Long
dl = Range("C60000").End(xlUp).Row
ActiveSheet.Range("H6") = Application.SumIf(Range("C7").Resize(dl), "c", Range("D7").Resize(dl))
 
Re : VBA Excel SUMIF

Bonjour le fil, le forum,

Bien d'accord avec TempusFugit pour simplifier.

Et s'il n'y a pas des "c" qui se baladent sur la plage C1:C6 on peut même écrire :

Code:
Range("H6") = Application.SumIf(Columns("C"), "c", Columns("D"))

Range("H6").Formula = "=sumif(C:C,""c"",D:D)"
A+
 
Re : VBA Excel SUMIF

Merci beaucoup pour votre aide. C'est vraiment gentil. C'était vraiment un question de nomenclature selon moi parce que j'ai essayé des trucs qui ressemblaient à ça et ne fonctionnaient pas.

J'ai retenu cette version (légèrement adapté):

ActiveSheet.Range("H6").Formula = "=sumif(C7:C" & Range("C7").End(xlDown).Row & ", ""c"",D7: D" & Range("D7").End(xlDown).Row & ")"

Je trouve que c'est ce qui est le plus proche de ce que je voulais

Encore merci.
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
507
Réponses
5
Affichages
753
Réponses
12
Affichages
756
Réponses
11
Affichages
1 K
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…