Somme des produit de deux colonne

Résolu/Fermé
Elzo - 22 sept. 2017 à 01:03
 Elzo - 20 mars 2018 à 10:58
Bonjour,
je suis nouveau sur VBA, je voudrai faire la somme des produit de 2 colonne. D'apres mes recherche suis tombé sur la formule SommeProd dont son utilisation m'est toujours difficile.
De ce fait je sollicite votre aide car il s'agit de mon memoire...
Merci d'avance


A voir également:

11 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 sept. 2017 à 20:13
1. L'objectf est un peu atteint malgré des erreurs inattendues des varibles.
Peux tu en dire plus ?
2. J'avoue que je comprend pas trop la syntaxe utilisee pour l'initialisation
Voir le commentaire
3. Quelques modification histoire de faire plus propre. J'ai aussi supprimé ta ligne de calcul de Bilan qui avait échappé aux ciseaux

' un tableau par catégorie de textbox
Dim TE(1 To 10) As String    ' equipements
Dim Tp(1 To 10) As Single    ' puissances
Dim Tq(1 To 10) As Single    ' quantites

' initialisation des tableaux depuis les textbox
' la propriété Controls permet d'acceder aux textbox via leur nom
Sub initT()
Dim k As Byte
For k = 1 To 10
  TE(k) = Me.Controls("txtE" & k).Text
  Tp(k) = Val(Me.Controls("txtp" & k).Text)
  Tq(k) = Val(Me.Controls("txtq" & k).Text)
Next k
End Sub

' transfert des tableaux vers feuille Source
Private Sub btnAjout_Click()
Dim lideb As Long, k As Long
Call initT
With Sheets("Source")
  lideb = 4 '.Range("A" & Rows.Count).End(xlUp).Row
  If lideb < 2 Then lideb = 2
  For k = 1 To 10
    .Range("A" & lideb + k - 1).Value = TE(k)
    .Range("B" & lideb + k - 1).Value = Tp(k)
    .Range("C" & lideb + k - 1).Value = Tq(k)
  Next k
End With
End Sub

' calcul bilan
Private Sub btnPuissance_Click()
Dim k As Byte, Bilan As Single
Bilan = 0
Call initT
For k = 1 To 10
  Bilan = Bilan + Val(Tq(k)) * Val(Tp(k))
Next k
MsgBox " Le bilan de puissance est : " & Bilan
End Sub

Cdlmnt
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 22 sept. 2017 à 07:27
bonjour

tout dépend de ce que vous voulez faire
s'il s'agit simplement de faire le total des produits lignes par ligne de deux colonnes:

soit colonne A par colonne B de ligne 1 à ligne 100 par exemple, à adapter:
simplement:

=SOMMEPROD((A1:A100)*(B1:B100))

Avec des Excel récents, cette formule peut fonctionner avec des hauteurs "totales" de champ (A:A ou B:B)
Toutefois vu qu'elle est assez lourde, mieux vaut limiter au minimum utile nombre de lignes.

mais si vous voulez soumettre ces opérations à d'autres conditions , revenez avec plus d'explications


crdlmnt


La qualité de la réponse dépend surtout de la clarté de la question, merci!
0
Oui Vaucluse, il s'agit bien de faire le total des produits lignes par ligne de deux colonnes.
La formule que vous m'avez donnée est - elle valable aussi sur VBA car la synthase ressemble a celle du classeur excel.
si possible puis je avoir un exemple sur VBA.
Merci davance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 sept. 2017 à 14:58
Bonjour elzo

Salut Vaucluse, ca va ? ;o)

je ne vois pas trop l'intér^t d'utiliser VBA mais si si ta plage n'est pas trop grande
MsgBox [SumProduct((A2:A200)*(B2:B200))] 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour la précision Michel,
J'utilise VBA pour faire un formulaire qui fait la somme de produit en donnant le résultat apres avoir cliqué sur un bouton.
Merci pour les reponses
0
Bonjour
Au fait je suis entrain de faire un formulaire Userform qui comporte 2 colonne (TextBox) a partir desquels je veux faire leur somme de produit.
1erement, j'ai posé ma formule pour le calcul. mais je constate que s'il ya pas d'entree dans une des plage des colonne, le calcul ne passe pas.
Sur ceux je sollicite votre aide.
2ement, le meme probleme je le constate dans les plages d'exel car apres avoir entrer les donnees dans le userform, je l'enregistre dans une base de donnees sous forme de tableau. une fois enregistré, je procede au calcul de leur SOMMEPROD. celle-ci ne passe pas aussi.
je suis disponible pour éventuels details afin de resoudre mon probleme car cela fait partie de mon Projet de fin d'etude.
merci d'avance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 sept. 2017 à 10:35
Bonjour,

Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic coller le raccourci dans votre message



questions:
1/Ton projet de fin d'études: études +/- informatique ou non ?
2/ nombre de lignes (environ) de la base de données

suis absent cet aprèm et demain matin...
0
Elzo > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
26 sept. 2017 à 13:39
Mon projet consiste a faire un outil de suivi de consommation d'energie electrique via VBA. Sur ceux je dois faire des formulaire pour l'execution du programme.
Actuellement je suis sur le premier formulaire qui consiste a faire un bilan de puissance composé de 2 colonne de 10 ligne a faire leur somme de produit.
Ci apres le lien de téléchargement du fichier avec comme mot de passe : formulaire
Merci d'avance

https://mon-partage.fr/f/nzR5h1kU/
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 sept. 2017 à 14:46
Bonjour

En attendant le retour de Michel (salut amical), une proposition pour simplifier un peu ton code
https://mon-partage.fr/f/EOrGasvL/

Cdlmnt
0
bien recu ccm81
L'objectf est un peu atteint malgré des erreurs inattendues des varibles.
J'avoue que je comprend pas trop la syntaxe utilisee pour l'initialisation
Qu'a meme un grand merci
Je reviendrai avec d'autres question soyez prets.
Merci
0
tres claire mon grand
Impeccable, je ne cesse d'en profiter.
Sachez que je reviendrai avec d'autres questions lol.. puisque je suis debutant et je dois realiser un projet avec.
Un grand Merci encore
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 sept. 2017 à 09:10
bien vu, Ccm, +1 !

:o)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
28 sept. 2017 à 13:44
Salut Michel

Merci pour le +1, c'est marrant, ce sont ceux qui n'en ont pas besoin qui trouvent une utilité aux solutions proposées ;-)
Au passage, supprimer l'utilisation de la fonction Val ici (un reste d'un premier jus)
Bilan = Bilan + Val(Tq(k)) * Val(Tp(k))

Bonne journée à toi

Cdlmnt
0
Bonjours les amis,
Je suis de retour pour savoir:
Comment insérer une date format jj/mm/aaaa ou calendrier dans un userform?
Le but est de calculer le nombre de jour entre 2 date données.
Merci d'avance
0