avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
18 juin 2007 à 01:04
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
18 juin 2007 à 03:03
Bonjour à tous,
je cherche à avoir le sous total d'une colone ("R") selon la valeur du TextBox1 et / ou TextBox2 et / ou TextBox3 et cela, sans avoir à placer un filtre dans ma feuille excel comme dans le script que j'ai en se moment. TextBox1 données dans la colone W , TextBox2 colone X et TextBox3 = Y
<hr size ="2" width="100%" />
Private Sub CommandButton1_Click()
Range("W2:Y65536").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=TextBox1.Text
Selection.AutoFilter Field:=2, Criteria1:=TextBox2.Text
Selection.AutoFilter Field:=3, Criteria1:=TextBox3.Text
TextBox5.Value = Range("R1")
End Sub
<hr size="2" width="100%" />Range ("R1") = à la celule qui contient la formule: =SOUS.TOTAL(9,R11:R65536).
Je ne veux pas de formule dans la feuille pour éviter que la feuille soit trop lourd pour rien.
Comment y parvenir sans filtres et sans formule dans la feuille?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 18 juin 2007 à 02:02
Je ne vois la raison d'utiliser un SOUS-total sachant que tu ne filtres pas la feuille. Une simple somme devrait suffire, non ?
Et je ne comprends pas les conditions des textbox 1, 2 et/ou 3
Pour avoir la somme de la colonne W, essaie ceci
textbox1 = [Sum(W1:W65536)]
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 18 juin 2007 à 03:03
Change les valeurs des Range au besoin. L'important avec SommeProd, c'est que les plages soient "identiques"... Elles doivent commencer à la même ligne et finir à la même ligne.
explication: si W 56 et X 2 et Y = 2007, alors la somme de R
Mais comme tu as besoin de variables qui sont les textbox, tu pourrais créer une formule dans une cellule, le temps d'alimenter ta textbox puis effacer cette formule encombrante
Range("R65536").Formula = "=SumProduct" & _
"((W1:W65530=" & TextBox1 & ")" & _
"*(X1:X65530=" & TextBox2 & ")" & _
"*(Y1:Y65530=" & TextBox3 & ")" & _
"*(R1:R65530))"
TextBox4 = Range("R65536")
Range("R65536") = ""
Une autre méthode serait d'utiliser une colonne vide et concaténer les 3 valeurs des colonnes W, X et Y
Disons, en Z1, tu mets
=W1 & X1 & Y1
et tu copies cette formule jusqu'en bas.
Ensuite, il ne te reste qu'à faire un SOMME.SI