Somme incrémentale en VBA - Excel 2007
Résolu/Fermé
Pyvoudelet
Messages postés
167
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
22 novembre 2024
-
15 févr. 2011 à 16:39
Pyvoudelet Messages postés 167 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 22 novembre 2024 - 16 févr. 2011 à 16:14
Pyvoudelet Messages postés 167 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 22 novembre 2024 - 16 févr. 2011 à 16:14
A voir également:
- Somme incrémentale en VBA - Excel 2007
- Formule somme excel colonne - Guide
- Liste déroulante excel - Guide
- Somme si couleur excel - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Mise en forme conditionnelle excel - Guide
8 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
16 févr. 2011 à 16:10
16 févr. 2011 à 16:10
Marqué comme résolu par Pyvoudelet le 16/02/2011 à 14:43
Pyvoudelet ça te fatigue de dire merci ?
Pyvoudelet ça te fatigue de dire merci ?
Bonjour,
Pas compris ce qu'étaient les valeurs de temps . (X1,X2...?)
En supposant que l'on commence en ligne 1 et que les "X" sont en colonne A et les "F" en colonne B, le résultat est donné en colonne C.
à adapter selon les besoins:
Bonne journée
Pas compris ce qu'étaient les valeurs de temps . (X1,X2...?)
En supposant que l'on commence en ligne 1 et que les "X" sont en colonne A et les "F" en colonne B, le résultat est donné en colonne C.
à adapter selon les besoins:
PrecProd = 0 For i = 1 To 500 prod = Cells(i, 1).Value * Cells(i, 2).Value Cells(i, 3).Value = prod + PrecProd PrecProd = PrecProd + prod Next
Bonne journée
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
15 févr. 2011 à 17:20
15 févr. 2011 à 17:20
Bonjour
1/ta dernière ligne
4 X4 F4 I4 = X4* F1 + X3 * F2 + X2* F2 + X1 * F4
ne serait ce pas plutôt
4 X4 F4 I4 = X4* F1 + X3 * F2 + X2* F3 + X1 * F4
2/ Xn fn In : références de cellules? sinon ?
Au besoin, mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
1/ta dernière ligne
4 X4 F4 I4 = X4* F1 + X3 * F2 + X2* F2 + X1 * F4
ne serait ce pas plutôt
4 X4 F4 I4 = X4* F1 + X3 * F2 + X2* F3 + X1 * F4
2/ Xn fn In : références de cellules? sinon ?
Au besoin, mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
Pyvoudelet
Messages postés
167
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
22 novembre 2024
12
15 févr. 2011 à 20:41
15 févr. 2011 à 20:41
Oui tu as raison Michel, je m étais trompé dans la formule.
voici le lien pour le fichier d exemple http://www.cijoint.fr/cjlink.php?file=cj201102/cijgLulF1X.xls
J ai don un tableau. je voudrais pouvoir calculer les valeur de I pour 2000 valeur. cC est une boucle a exécuter juste une fois (peut être éventuellement avec une commande bouton mais ça je peux m en charge).
J arrive pas a recréer l itération incrémentale avec mes boucles. avez vous une idée?? j avais pensé à deux boucle For imbriquées...
voici le lien pour le fichier d exemple http://www.cijoint.fr/cjlink.php?file=cj201102/cijgLulF1X.xls
J ai don un tableau. je voudrais pouvoir calculer les valeur de I pour 2000 valeur. cC est une boucle a exécuter juste une fois (peut être éventuellement avec une commande bouton mais ça je peux m en charge).
J arrive pas a recréer l itération incrémentale avec mes boucles. avez vous une idée?? j avais pensé à deux boucle For imbriquées...
heu....
en voyant la réponse de michel_m, je m'aperçois que ma réponse est complètement hors sujet !!!
Je vais réapprendre à lire .
en voyant la réponse de michel_m, je m'aperçois que ma réponse est complètement hors sujet !!!
Je vais réapprendre à lire .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Si j'ai bien lu et tout compris 'cette fois) ça devrait être ça:
le tableau de valeurs commençant en ligne 1 colonnes A et B
edit : pas vu le commentaire avant de poster, modifier boucle i=1 à 2000
Si j'ai bien lu et tout compris 'cette fois) ça devrait être ça:
For i = 1 To 500 temp = 0 For j = 1 To i temp = temp + Cells(i + 1 - j, 1).Value * Cells(j, 2).Value Next j Cells(i, 3).Value = temp Next i
le tableau de valeurs commençant en ligne 1 colonnes A et B
edit : pas vu le commentaire avant de poster, modifier boucle i=1 à 2000
ccm81
Messages postés
10904
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 décembre 2024
2 428
15 févr. 2011 à 22:26
15 févr. 2011 à 22:26
bonsoir
reste a modifier les constantes
http://www.cijoint.fr/cjlink.php?file=cj201102/cijMd9W1a7.xls
bonne suite
reste a modifier les constantes
http://www.cijoint.fr/cjlink.php?file=cj201102/cijMd9W1a7.xls
bonne suite
ccm81
Messages postés
10904
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 décembre 2024
2 428
15 févr. 2011 à 22:28
15 févr. 2011 à 22:28
@paf
desolé, pas vu le post 5
desolé, pas vu le post 5
Pyvoudelet
Messages postés
167
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
22 novembre 2024
12
15 févr. 2011 à 22:45
15 févr. 2011 à 22:45
est ce que ca va pas etre trop long pour 500 a 2000 itereation??
ccm81
Messages postés
10904
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 décembre 2024
2 428
Modifié par ccm81 le 16/02/2011 à 09:42
Modifié par ccm81 le 16/02/2011 à 09:42
re
si,
- donc comme le propose eriic, au post 9, il faut travailler en memoire
- une autre proposition qui fait les 2000 itérations en moins de 1 s.
RQ. s a été déclaré en double (precision) , le type (entier) long de mon post précédent n'est peut etre pas adapté
bonne suite
si,
- donc comme le propose eriic, au post 9, il faut travailler en memoire
- une autre proposition qui fait les 2000 itérations en moins de 1 s.
RQ. s a été déclaré en double (precision) , le type (entier) long de mon post précédent n'est peut etre pas adapté
Private Sub CommandButton1_Click() Const lideb = 3 Const lifin = 2002 Const cox = "B" Const cof = "C" Const coi = "E" Dim t As Long, j As Long, nbli As Long Dim s As Double Dim tx, tf, ti tx = Range(cox & lideb & ":" & cox & lifin) tf = Range(cof & lideb & ":" & cof & lifin) ti = Range(coi & lideb & ":" & coi & lifin) nbli = lifin - lideb + 1 For t = 1 To nbli s = 0 For j = 1 To t s = s + tx(j, 1) * tf(t - j + 1, 1) Next j ti(t, 1) = s Next t Range(coi & lideb & ":" & coi & lifin).Value = ti End Sub
bonne suite
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
Modifié par eriiic le 16/02/2011 à 00:01
Modifié par eriiic le 16/02/2011 à 00:01
Bonsoir,
Une autre proposition par fonction personnalisée, qui calcule en mémoire (plus rapide).
Syntaxe :
=sommeincrementale($B$3:$C4)
$B$3:$C4 : plage des X,F
à recopier vers le bas si besoin
exemple : SommeIncrementale.xls
eric
PS: s'il faut systématiquement calculer toutes les valeurs on peut, toujours en travaillant en mémoire, le faire sous forme de sub ce qui sera encore plus rapide
Une autre proposition par fonction personnalisée, qui calcule en mémoire (plus rapide).
Function SommeIncrementale(plage As Range) As Double Dim datas(), lig As Long, derlig As Long If plage.Columns.Count <> 2 Then SommeIncrementale = 0 datas = plage derlig = UBound(datas) For lig = 1 To UBound(datas) SommeIncrementale = SommeIncrementale + datas(lig, 1) * datas(derlig - lig + 1, 2) Next lig End Function
Syntaxe :
=sommeincrementale($B$3:$C4)
$B$3:$C4 : plage des X,F
à recopier vers le bas si besoin
exemple : SommeIncrementale.xls
eric
PS: s'il faut systématiquement calculer toutes les valeurs on peut, toujours en travaillant en mémoire, le faire sous forme de sub ce qui sera encore plus rapide
Pyvoudelet
Messages postés
167
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
22 novembre 2024
12
16 févr. 2011 à 16:14
16 févr. 2011 à 16:14
MErci a tous pour vos solutions, je vais voir celle que j arrive le mieux a adapter !
16 févr. 2011 à 16:14