Somme des produit de deux colonne

Résolu
Elzo -  
 Elzo -
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

11 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  3. Elzo
     
    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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Elzo
     
    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
  7. Elzo
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      1. Elzo > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Elzo
       
      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
  9. Elzo
     
    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
  10. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bien vu, Ccm, +1 !

    :o)
    0
  11. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  12. Elzo
     
    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