Gestion d'une formule SUMIFS dans EXCEL VBA

LucWalraf

XLDnaute Nouveau
Bonjour,

Je cherche à inscrire dans une feuille une formule "somme.si.ens" (SUMIFS) composée par la macro.

Ca fonctionne pour des cas simples mais ça me renvoie une erreur dès que je raffine la formule.

Quelqu'un a une idée pour régler ça ? Merci !

Exemple 1 (ça marche avec la première définition de toto mais pas avec la deuxième) :

VB:
Sub Test()
 
Dim toto As String
 
'toto = "sdf"
toto = "3 fjfj"
 
Cells(1, 1).FormulaR1C1 = "=SUMIFS(C[1],C[2]," & toto & ")"
 
End Sub


Exemple 2 (ça marche dans les 2 premiers cas mais pas dans le 3ème) :

VB:
Sub Test2()
 
origine1 = ActiveSheet.Name
origine2 = ThisWorkbook.Name
 
'Cells(1, 1).FormulaR1C1 = "=SUMIFS(C[1],C[2],RC[3])"
'Cells(1, 1).FormulaR1C1 = "=SUMIFS([Classeur1]Feuil1!C2,[Classeur1]Feuil1!C1,RC[3])"
Cells(1, 1).FormulaR1C1 = "=SUMIFS([" & origine2 & "]" & origine1 & "!C2,[" & origine2 & "]" & origine1 & "!C1,RC[3])"
 
End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Peut-être des espaces dans les noms de feuille ou classeur. Alors tester:
VB:
"=SUMIFS('[" & origine2 & "]" & origine1 & "'!C2,[" & origine2 & "]" & origine1 & "!C1,RC[3])"
En vous laissant repérer ce qui a été ajouté.
Cordialement
 

LucWalraf

XLDnaute Nouveau
J'ai trouvé l'ajout ! :) ( ' )
Je vais tester, merci.
Mais la logique voudrait de rajouter les ' dans la deuxième référence aussi, non ?
Ca donnerait :
"=SUMIFS('[" & origine2 & "]" & origine1 & "'!C2,'[" & origine2 & "]" & origine1 & "'!C1,RC[3])"
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Il doit y avoir des crochets en trop. Mais comme il n'y a toujours pas de classeur exemple, je m'en tiendrai là, mais en vous donnant toutefois une astuce:

Tapez dans une cellule votre formule fonctionnelle. Gardez la cellule sélectionnée. Allez dans l'éditeur de Macro et dans la fenêtre Excécution (CTRL+G si elle n'est pas affichée) tapez : '?ActiveCell.Formula' ou '?ActiveCell.FormulaR1C1' puis validez. Vous aurez un modèle parfait pour votre VBA.

Cordialement
 

job75

XLDnaute Barbatruc
Bonjour LucWalraf, Roblochon,

Vraiment pas besoin de fichier, pour le 1er problème :
VB:
Sub Test()
Dim toto As String
'toto = "sdf"
toto = "3 fjfj"
Cells(1, 1).FormulaR1C1 = "=SUMIFS(C[1],C[2],""" & toto & """)"
End Sub
Pour le 2ème problème la formule du post #3 est correcte :
Code:
Sub Test2()
origine1 = ActiveSheet.Name
origine2 = ThisWorkbook.Name
'Cells(1, 1).FormulaR1C1 = "=SUMIFS(C[1],C[2],RC[3])"
'Cells(1, 1).FormulaR1C1 = "=SUMIFS('[Classeur1]Feuil1'!C2,'[Classeur1]Feuil1'!C1,RC[3])"
Cells(1, 1).FormulaR1C1 = "=SUMIFS('[" & origine2 & "]" & origine1 & "'!C2,'[" & origine2 & "]" & origine1 & "'!C1,RC[3])"
End Sub
Le guillemet anglais ' est placé avant le point d'exclamation alors qu'au post #5 il est placé après...

A+
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof