Se connecter avec
S'enregistrer | Connectez-vous

Combinaison produit somme

Dernière réponse : dans Programmation

:)  Bonjour ,
je teste une idée mais qui ne fonctionne pas je t'explique
j'ai deux feuilles "feuil1" et "feuil2"
dans "feuil2" j'ai une colonne j qui contien des valeurs de J77 a J264
la feuille2 contien des valeurs de D4 a D191 JE veux faire le produit+somme suivant:


  1. (D4*J77+D5*J78+...+D191*J264)/q
,

q c'est une valeur deja fixé
et mettre le resultat dans la cellule H4.

je ne vois pas pas vrement comment m'y prendre..

merci de votre aide

Autres pages sur : combinaison produit somme

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Ah ! :)  C'est pas mal du tout.

Mais quand on a une erreur, on dit à quelle ligne :o 

La variable i n'est pas déclarée. Ca, c'est parce que l'option explicit n'a pas été utilisé :(  Mets Option Explicit au début de ton code, sur la première ligne du module.
A chaque Range/Cells, précise bien le classeur et la feuille.
Et fais attention à l'indentation de ton code.
Je reviens sur ce que j'ai dit. Tu travailles sur un seul classeur mais sur plusieurs feuilles, tu peux te dispenser de préciser le classeur.
De chaque cellule, c'est la valeur qui t'intéresse, précise-le.

Je réécris ton code :
  1. Sub calcul()
  2. Dim resultat As Double
  3. Dim i As Long
  4.  
  5. resultat = 0
  6. For i = 0 To 187
  7. resultat = resultat + Worksheet("feuil1" ).Cells(i + 4, 4).Value * _
  8. Worksheet("feuil2" ).Cells(i + 77, 10).Value
  9. Next
  10.  
  11. resultat = resultat / Worksheet("feuil1" ).Range("D193" ).Value
  12. Worksheets("Note" ).Range("H4").Value = resultat
  13.  
  14. End Sub
Expert Programmation

Salut,

Tu veux faire ça en VB ? C'est pourtant typiquement du traitement de tableur, ça !
Si c'est pour l'exercice en VB, je vais t'aider ( :)  ). Si c'est le résultat qui compte, je t'envoie en cat' Logiciel et je vais t'y aider à le faire avec des formules ( :)  ).

:)  je veux faire ça en VB
ecrire un code en vb qui s'execute dans excel qui me calcule bien
(D4*J77+D5*J78+...+D191*J264)/q

selon que je l'ai decrit




j'ai deux feuilles "feuil1" et "feuil2"
dans "feuil2" j'ai une colonne j qui contien des valeurs de J77 a J264
la feuille2 contien des valeurs de D4 a D191 JE veux faire le produit+somme suivant:
(D4*J77+D5*J78+...+D191*J264)/q


,q c'est une valeur deja fixé
et mettre le resultat dans "la cellule H4 de la feuil1".






Expert Programmation

En math, on écrirait :
  1. __i=0
  2. \
  3. / D(i+4) x J(i+77)
  4. ¯¯186
  5. ________________________
  6. q


Commence par écrire D(i+4) x J(i+77).
Tips : Je te propose d'utiliser Cells.

Puis, la somme se fera avec une boucle For.

Enfin, on divisera le tout par q.

voila j'ai essayé un code bidon :cry: 

  1. Sub calcul()
  2. Dim somme As Double
  3. somme = 0
  4.  
  5. For i = 0 To 186
  6.  
  7. somme = somme + D(i + 4) * J(i + 77)
  8.  
  9. Next i
  10. Cells(4, 8) = somme / R193C4 , 'ici R193C4=q
  11.  
  12. End sub


ça ne fonctionne pas comme j'ai fait et puis kes valeurs de J sont dans la feuille 2 je ne sais pas s'il sais les chercher comme ça.? :??: 

  1. Sub calcul()
  2. Dim somme As Double
  3. somme = 0
  4.  
  5. For i = 0 To 186
  6.  
  7. cells(i,8) = D(i + 4) * J(i + 77)'je ne comprend pas bien cette ligne :??:
  8. somme=somme+cells(i,8)
  9.  
  10. Next i
  11. Cells(4, 8) = somme / R193C4 , 'ici R193C4=q
  12.  
  13. End sub


j'ai lu les articles

je croix que pour faire des copies a l'avenir ne sera plus un trouble pour moi mais utiliser les données des feuilles dans une formule reste un mystere
j'ai une idée pour resoudre mon probleme mais elle n'est pas assez efficace il s'agit d'utiliser workbook->worksheet.. pour faire une copie des donner de la colonne J ENSUITE Faire un produit tout simple ensuite faire la somme mais c'est trop amateur non? :??: 
Expert Programmation

Mais non. Somme = Somme + .. c'était très bien. C'est D et J qui n'existent pas. C'est une notation "mathématique". Utilise Cells.

Effectivement, si telle cellule n'est pas dans la feuille active du classeur actif, il faut les préciser. Comme tu travailles avec plusieurs feuilles, il faut utiliser la notation Workbook.Worksheet.Cells() (Entre chaque mot, c'est un point, pas une flèche. Nous sommes en VB, pas en C/C++).

EDIT: Le code que tu m'as proposé en privé était plutôt pas mal. Copie-le ici.

voila comment je l'ai ecrit mais il y a une erreur .

  1. sub calcul()
  2. Dim resultat As Double
  3.  
  4.  
  5. resultat = 0
  6.  
  7. For i = 4 To 191
  8. resultat = resultat + (Workbook("classeur1").Worksheet("feuil1").Cells(i, 4) * Workbook("classeur1").Worksheet("feuil2").Cells(i + 73, 10))
  9. Next i
  10. resultat = resultat / Range("D193")
  11.  
  12. Worksheets("Note").Activate
  13. Cells(4, 8).Select
  14. ActiveCell = "resultat" 'là je voudrais mettre "resultat" dans la case H4.!!
  15.  
  16.  
  17.  
  18.  
  19. End Sub

voila j'ai réecrit mais je tiens a t'indiquer que Worksheet m'indiquait une erreur alors j'ai ecris Worksheets et le resultat est tout bon
sans oublier Next i au lieu de Next
enfin toi tu es un as peu etre qu'on peu faire certaines simplification :bounce: 


voici le code:
  1. sub calcul()
  2. Dim resultat As Double
  3. Dim i As Long
  4.  
  5.  
  6. resultat = 0
  7.  
  8. For i = 0 To 187
  9. resultat = resultat + Worksheets("Note").Cells(i + 4, 4).Value * _
  10. Worksheets("valobligTF").Cells(i + 77, 10).Value
  11.  
  12. Next i
  13. resultat = (resultat / Worksheets("Note").Range("D193").Value)
  14. Worksheets("Note").Range("H4").Value = resultat
  15.  
  16.  
  17. End Sub
Expert Programmation

Oui, je suis un a. :sol:  Oups, il manque un S à as :sarcastic:  Tout comme il en manquait à Worksheets, désol'. Je suis très satisfait de voir que tu as corrigé de toi-même.

Le i qui suit le Next, c'est un vieil archaïsme, du temps où le Basic n'était pas Visual, et où indentation n'était pas encore inventée. Autant te dire que ça date !

Il est très important, outre le fait que ça marche, que tu ais compris pourquoi :o 

Ligne 13, tu mets des parenthèses inutiles autour de ton calcul, évite ce genre de chose : les parenthèses ont aussi une signification en programmation, et on peut se retrouver avec de telles manies avec beaucoup trop de parenthèses et ça devient illisible.

Choisis la moins mauvaise des réponse, l topic passera en résolu.
Lassé par la pub ? Créez un compte