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 Impliqué
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])"
 

LucWalraf

XLDnaute Nouveau
re,


tout à fait!:)

Bonne soirée

Aille, non, malheureusement ça ne marche pas.
Cette macro me renvoie encore une erreur :

VB:
Sub Test2()

origine1 = ActiveSheet.Name
origine2 = ThisWorkbook.Name


Cells(1, 1).FormulaR1C1 = "=SUMIFS('[" & origine2 & "]" & origine1 & "!'C2,'[" & origine2 & "]" & origine1 & "!'C1,RC[3])"

End Sub
 

Roblochon

XLDnaute Impliqué
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+
 

LucWalraf

XLDnaute Nouveau
Merci job75, les deux exemples fonctionnent. :)

Juste une question : que représentent les ' ?
J'ai l'impression qu'ils ne sont pas toujours nécessaires - mais parfois oui .... ?

Bonne journée,

Luc
 

job75

XLDnaute Barbatruc
Les ' sont nécessaires comme l'a dit Roblochon quand il y a des espaces dans les noms de feuille ou de classeur.
 

Discussions similaires


Haut Bas