Microsoft 365 Syntaxe VBA formule somme.si

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 !

CelluleVide

XLDnaute Occasionnel
Bonjour le Forum,
Je bute sur la syntaxe d'une formule Somme.si en VBA ou je voudrais remplacer des valeurs par des variables car la dernière colonne peut évoluer au fil du temps.
Voici mon code:
'Trouver derniere colonne:
Dim DerniereColonne As Integer
DerniereColonne = ActiveSheet.UsedRange.Columns.Count - 2
DerCol_Cde = DerniereColonne - 6
DerCol_Somme = DerniereColonne - 7

VOIR SYNTAXE DES FORMULES (Changer 47 par DerniereColonne et 41 par DerCol_Cde )

Range("F4").Select
ActiveCell.FormulaR1C1 = "=SUMIF(R2C8:R2C47,R2C8,RC[2]:RC[41])"

Merci d'avance.
 
Solution
Salut CelluleVide 😜

Perso, j'utilise cette technique
VB:
Dim sForm as String
sForm = "=SUMIF(R2C8:R2C#1,R2C8,RC[2]:RC[#2])"
sForm = REPLACE(sForm,"#1",DerniereColonne)
sForm = REPLACE(sForm,"#2",DerCol_Cde)
ActiveCell.FormulaR1C1 = sForm

A tester
Salut CelluleVide 😜

Perso, j'utilise cette technique
VB:
Dim sForm as String
sForm = "=SUMIF(R2C8:R2C#1,R2C8,RC[2]:RC[#2])"
sForm = REPLACE(sForm,"#1",DerniereColonne)
sForm = REPLACE(sForm,"#2",DerCol_Cde)
ActiveCell.FormulaR1C1 = sForm

A tester
 
Bonjour Cellulevide, wDog,
Ou encore avec :
VB:
Sub SommeSi()
Dim DerniereColonne%, DerCol_Cde%, DerCol_Somme%, Plage1, Plage2, Valeur
DerniereColonne = ActiveSheet.UsedRange.Columns.Count - 2
DerCol_Cde = DerniereColonne - 6
DerCol_Somme = DerniereColonne - 7
Set Plage1 = Range(Cells(2, 8), Cells(2, DerCol_Cde))   ' Définition plage de recherche
Set Plage2 = Range(Cells(2, 8), Cells(2, DerCol_Somme)) ' Définition plage à sommer
Set Valeur = Cells(2, 8)                                ' Crière de recherche
' On reconstitue la formule et la stockons en F4
Range("F4").Formula = "=SUMIF(" & Plage1.Address & "," & Valeur.Address & "," & Plage2.Address & ")"
End Sub
Un peu plus compliqué que la macro de wDog 🙂
 
Bonjour wDog66, Sylvanu,
J'ai tenté la solution de Wdog66 qui me convient parfaitement même si je ne comprends pas la logique.
Mon problème est résolu.
Merci a vous 2! Bonne fin de journée
C'est simple pourtant 😜
Vous définissez la formule à utiliser dans une variable "sForm" de type String
Replace() permet de remplacer dans une chaine, un élément à trouver par un autre
Donc cela remplace #1 par votre première valeur contenu dans la variable et même chose pour #2
Voilà, j'espère que ce sera plus clair...
 
C'est simple pourtant 😜
Vous définissez la formule à utiliser dans une variable "sForm" de type String
Replace() permet de remplacer dans une chaine, un élément à trouver par un autre
Donc cela remplace #1 par votre première valeur contenu dans la variable et même chose pour #2
Voilà, j'espère que ce sera plus clair...
Bonjour Wdog66,
merci pour ton explication. c'est effectivement simple!
 
- 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

Discussions similaires

Réponses
9
Affichages
1 K
  • Question Question
Microsoft 365 Formules
Réponses
2
Affichages
709
Réponses
12
Affichages
1 K
Retour