Macro value =somprod

Résolu/Fermé
roulio66 Messages postés 8 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 26 avril 2015 - 2 mars 2015 à 17:13
Patty5083 Messages postés 34 Date d'inscription lundi 14 avril 2014 Statut Membre Dernière intervention 10 novembre 2019 - 4 mars 2015 à 10:01
bonjour
je suis entrain de réaliser un tableau excelle qui dois remplir un tableau
et réaliser des statistiques

pour mon tableau de stat voila la formule que j'ai a l'origine :
=SOMMEPROD(NB.SI(C1:C3984;"EXTERNE"))

cette formule varie selon les stat :
=SOMMEPROD(NB.SI(D1:D3984;"information"))+(NB.SI(D1:D3984;"réservation"))+(NB.SI(D1:D3984;"annulation"))

mais j'aimerai que la sélection des cellules s'arête à la dernière cellule rempli
mais même sous forme de macro je n'arrive pas a modifier ce paramètre:

Range("L5").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(COUNTIF(R[-2]C[-8]:R[3995]C[-8],""BONS CADEAUX""))"
Range("L6").Select
End Sub

j'aimerai remplacer le 3995 par un Range("C1").End(xlDown)


(je débute en VBA et quand je rentre sur certain détail je bloque)

je reste à votre dispo si besoin
merci
A voir également:

2 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
2 mars 2015 à 17:47
Bonjour

Tu as peut être une solution sans macro en nommant ta plage de façon dynamique
un exemple
https://www.cjoint.com/?3Ccr6oISB3r

Cdlmnt
1
Patty5083 Messages postés 34 Date d'inscription lundi 14 avril 2014 Statut Membre Dernière intervention 10 novembre 2019
3 mars 2015 à 10:58
Bonjour
Tu peux peut-être essayer quelque chose comme ça :
dl récupères ta dernière ligne, dans ton cas 3995, puis tu fais ta formule en plusieurs parties que tu concatènes en finale :

dl = Range("C1").End(xlDown).Row
    Range("L5").Select
    Formule1 = "=SUMPRODUCT(R[-" & dl
    Formule2 = "]C[-5],R[-15]C[-5])"
    ActiveCell.FormulaR1C1 = Formule1 & Formule2


Inspire toi de cet exemple

Bon courage
-2
Patty5083 Messages postés 34 Date d'inscription lundi 14 avril 2014 Statut Membre Dernière intervention 10 novembre 2019
4 mars 2015 à 10:01
Pour éviter du travail, je pense que tu décomposer ta formule comme suit :

dl = Range("C1").End(xlDown).Row
Range("L5").Select 
Formul1 =  "=SUMPRODUCT(COUNTIF(R[-2]C[-8]:R[" & dl
Formul2 = "]C[-8],""BONS CADEAUX""))" 
ActiveCell.FormulaR1C1 = Formul1 & Formul2


A +
0