SOMMEPROD et SOUS.TOTAL -> VBA

totor2027

XLDnaute Nouveau
Bonjour,

Dans une cellule j'ai cette formule :
=SOMMEPROD(($D$12:$D$1000=$H4)*SOUS.TOTAL(9;DECALE R($C$12;LIGNE($C$12:$C$1000)-LIGNE($A$12); )))

Je voudrais pouvoir la convertir en VBA afin de l'exécuter à partir d'un bouton.

Comment faire ?

Si quelqu'un à une idée, je suis preneur.

PS j'ai mis volontairement un espace entre le dernier point-virgule et les 3 parenthèses fermantes pour na pas avoir de smilles !

Cordialement
 

totor2027

XLDnaute Nouveau
Re : SOMMEPROD et SOUS.TOTAL -> VBA

Bonjour,

Après quelques tests en utilisant l'enregistreur de macro, la formule générer est :
Range("J3").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((R12C4:R1000C4=RC8)*SUBTOTAL(9,OFFSET(R12C3,ROW(R12C3:R1000C3)-ROW(R12C1),)))"

correspondant à la formule de la cellule :

=SOMMEPROD(($D$12:$D$1000=$H3)*SOUS.TOTAL(9;DECALER($C$12;LIGNE($C$12:$C$1000)-LIGNE($A$12); )))

Le problème est que je voudrais pas injecter la formule dans la cellule mais le résultat du calcul.

Si quelqu'un à une idée.

Cordialement
 

LPandre

XLDnaute Impliqué
Re : SOMMEPROD et SOUS.TOTAL -> VBA

re :

toujours dans la même idée :

tu complètes ta macro (ou tu en démarres une autre que tu mettras au bout de la première) avec la macro suivante à enregistrer :

Selection de la page qui va bien,
selection de la cellule qui contient la formule,
edition copier
edition collage spécial/ valeur
Echap
selection de la cellule avec le résultat ( ça c'est en option, mais j'aime bien arriver sur la dernière cellule modifiée)

Tu peux même rajouter un code macro en début de ta macro initiale pour nettoyer la cellule qui contient la formule.

@+
Cordialement
 

totor2027

XLDnaute Nouveau
Re : SOMMEPROD et SOUS.TOTAL -> VBA

Je viens de compléter la macro avec un copier / collage spécial -> valeur .

Ca fonctionne bien, merci à vous deux.


J'ai par ailleurs continué mes recherches.

Pour l'utilisation du sous.total en vba :

Range("L3").Select ' sélection de la celulle affichant le résultat
ActiveCell.Value = Application.Subtotal(9, [G:G]) 'somme des valeurs affichées dans la colonne G.

Pour l'utilisation du somprod en vba :

ActiveCell.Value = Application.WorksheetFunction.SumProduct(Application.CountIf([zone], [Type]), [duree])

Évidemment ce dernier exemple ne marche pas dans mon tableau, je n'est pas définie les zones "zone, type et duree".

J’aimerais quand même savoir comment ont peut utilisé Application.SumProduct avec Application.Subtotal uniquement par vba sur un exemple théorique.

Colonne A : nom, pouvant se répéter N fois
Titi
Tata
Toto
Colonne B : lieux, liste contrôlée
Dedans
Dehors
Nulle part
Colonne C : valeur, décimale libre
Nombre de sous dans la poche

J’aimerais savoir en utilisant les filtres automatique d’excel sur la colonne B (lieux), combien de sous titi, tata et toto on dans leurs poches.


Ca pourra toujours servir dans d’autres tableaux.


Cordialement
 

LPandre

XLDnaute Impliqué
Re : SOMMEPROD et SOUS.TOTAL -> VBA

Re :

je ne comprends pas ta dernière demande ou plus exactement quel est le problème ?

Tu peux enregistrer ( ou pas) les commandes Données/Trier/ Colonnekivabien/ Données /Sous total/ etc.
Si tu avais un fichier test...

@+ te lire
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 456
dernier inscrit
mango53200