Microsoft 365 VBA Sum.if - Application de la formule dans la cellule et non pas sa valeur

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 !

JeanPi37

XLDnaute Nouveau
Bonjour à toutes, à tous et à chacun,

J'ai (péniblement) réussi à écrire un ensemble de modules pour mon suivi de budget.

Problème :
Le code
Formule = (Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa), Cells(LigBas, ColVisa)), "Visa", _
Range(Cells(LigHaut, ColDeb), Cells(LigBas, ColDeb))) - Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa), _
Cells(LigBas, ColVisa)), "Visa", Range(Cells(LigHaut, ColCred), Cells(LigBas, ColCred))))

Me donne une valeur dans la cellule alors que je souhaiterais avoir la formule (comme je l'avais écrite dans ma feuille "=Somme.si ..."

J'espère que je suis assez clair et que quelqu'un a une solution

Merci
JeanPi37
 
bonjour
il faut que ta varialbe "Formule" contienne la formule telle que tu veux la voir dans ta cellule
exemple
formule="=sum(B5:G5")"
range("H5").formula=formule

et si 5 est lui meme dans une varialbe "lig" par exemple
formule="=sum(B" &lig &":G" &lig &")"
 
Bonjour Jean et bienvenu sur XLD, bonjour Vgendron,
Si vous voulez la formule alors elle doit être considérée comme du texte, encadrez la de guillements.
VB:
Formule ="= (Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa),
.....
Haut, ColCred), Cells(LigBas, ColCred))))"
Le "= est utilisé si ensuite vous voulez mettre cette formule dans des cellules, comme par exemple :
Code:
Sub essai()
Formule = "= (Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa),....Haut, ColCred), Cells(LigBas, ColCred))))"
Range("A1:A10").FormulaLocal = Formule
End Sub
Par contre attention, si dans vos formules vous avez des guillemets il faut les doubler pour qu'ils soient compris par le VBA.
Donc en fait précisez ce que vous voulez en faire ensuite. 🙂
 
Bonjour Jean et bienvenu sur XLD, bonjour Vgendron,
Si vous voulez la formule alors elle doit être considérée comme du texte, encadrez la de guillements.
VB:
Formule ="= (Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa),
.....
Haut, ColCred), Cells(LigBas, ColCred))))"
Le "= est utilisé si ensuite vous voulez mettre cette formule dans des cellules, comme par exemple :
Code:
Sub essai()
Formule = "= (Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa),....Haut, ColCred), Cells(LigBas, ColCred))))"
Range("A1:A10").FormulaLocal = Formule
End Sub
Par contre attention, si dans vos formules vous avez des guillemets il faut les doubler pour qu'ils soient compris par le VBA.
Donc en fait précisez ce que vous voulez en faire ensuite. 🙂
Merci Sylvanu mais... mon problème n'est pas réglé.
J'ai sûrement mal modifié mon code.
Voici le nouveau :
Formule = "=(Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa), Cells(LigBas, ColVisa)), ""Visa"", _
Range(Cells(LigHaut, ColDeb), Cells(LigBas, ColDeb)))" - "Application.WorksheetFunction.SumIf(Range(Cells(LigHaut, ColVisa), _
Cells(LigBas, ColVisa)), ""Visa"", Range(Cells(LigHaut, ColCred), Cells(LigBas, ColCred))))""

Il me met une erreur "Attendu fin d'instruction sur le deuxième range !

Une idée ?
JeanPi37
 
- 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
Retour