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
 

Roblochon

XLDnaute Barbatruc
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])"
 

Roblochon

XLDnaute Barbatruc
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+
 

Discussions similaires

Réponses
14
Affichages
313
Haut Bas