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:
,
(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
Ah !
C'est pas mal du tout.
Mais quand on a une erreur, on dit à quelle ligne
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 :
C'est pas mal du tout.Mais quand on a une erreur, on dit à quelle ligne
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 :
Sub calcul()
Dim resultat As Double
Dim i As Long
resultat = 0
For i = 0 To 187
resultat = resultat + Worksheet("feuil1" ).Cells(i + 4, 4).Value * _
Worksheet("feuil2" ).Cells(i + 77, 10).Value
Next
resultat = resultat / Worksheet("feuil1" ).Range("D193" ).Value
Worksheets("Note" ).Range("H4").Value = resultat
End Sub
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".
voila j'ai essayé un code bidon
ç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.?
Sub calcul()
Dim somme As Double
somme = 0
For i = 0 To 186
somme = somme + D(i + 4) * J(i + 77)
Next i
Cells(4, 8) = somme / R193C4 , 'ici R193C4=q
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.?
Pas mal pour l'ensemble.
Ligne 7, ne t'ai-je pas dit d'utiliser Cells() ?
Lis ces quelques articles :
http://www.presence-pc.com/forum/ppc/Programmation/vous...
http://www.presence-pc.com/forum/ppc/Programmation/tuto... (<-- Dans celui-là, la solution à tes problèmes de feuilles)
Ligne 7, ne t'ai-je pas dit d'utiliser Cells() ?
Lis ces quelques articles :
http://www.presence-pc.com/forum/ppc/Programmation/vous...
http://www.presence-pc.com/forum/ppc/Programmation/tuto... (<-- Dans celui-là, la solution à tes problèmes de feuilles)
Sub calcul()
Dim somme As Double
somme = 0
For i = 0 To 186
cells(i,8) = D(i + 4) * J(i + 77)'je ne comprend pas bien cette ligne :??:
somme=somme+cells(i,8)
Next i
Cells(4, 8) = somme / R193C4 , 'ici R193C4=q
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?
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.
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 .
sub calcul()
Dim resultat As Double
resultat = 0
For i = 4 To 191
resultat = resultat + (Workbook("classeur1").Worksheet("feuil1").Cells(i, 4) * Workbook("classeur1").Worksheet("feuil2").Cells(i + 73, 10))
Next i
resultat = resultat / Range("D193")
Worksheets("Note").Activate
Cells(4, 8).Select
ActiveCell = "resultat" 'là je voudrais mettre "resultat" dans la case H4.!!
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
voici le code:
sans oublier Next i au lieu de Next
enfin toi tu es un as peu etre qu'on peu faire certaines simplification
voici le code:
sub calcul()
Dim resultat As Double
Dim i As Long
resultat = 0
For i = 0 To 187
resultat = resultat + Worksheets("Note").Cells(i + 4, 4).Value * _
Worksheets("valobligTF").Cells(i + 77, 10).Value
Next i
resultat = (resultat / Worksheets("Note").Range("D193").Value)
Worksheets("Note").Range("H4").Value = resultat
End Sub
Oui, je suis un a.
Oups, il manque un S à as
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
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.
Oups, il manque un S à as
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
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