Boucle et fonction somme

Résolu/Fermé
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008 - 17 mars 2008 à 19:40
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008 - 18 mars 2008 à 19:59
Bonjour,

Je suis débutante dans le vba et là au secours !!
Je vous explique
Je dispose d'un fichier avec des lignes de bons de réception reprenant un code fournisseur et la quantité d'articles réceptionnée que j'ai classé par code fournisseur.
J'aimerai calculer la somme des quantités réceptionées par code fournisseur....
Voilà ce que j'ai commencé

Sub calcul()
ligne=4
colonne=2
while (cells(ligne, colonne)<>0)
if cells(ligne, colonne).value = cells(ligne+1, colonne) then

...et là je n'arrive pas à insérer ma fonction somme.
La somme devrait se calculer en cells(ligne, colonne+11)
et les quantités se situent dans le colonne 10(J)
Je ne maîtrise absolument pas!!
Help please !!
Merci beaucoup
A bientôt

5 réponses

Bonjour,

Je ne comprends pas comment sont organisées tes données
Pourquoi tu fais le test "if cells(ligne, colonne).value = cells(ligne+1, colonne)", je suppose c'est le code fournisseur.
Toutes les lignes ne font-elles pas référence au même fournisseur?
Le total doit il se faire en partiel à chaque ligne ou en cumulé à la dernière ligne?

A+.
0
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008
17 mars 2008 à 20:04
Bonjour
Oui c'est organisé ainsi
code fournisseur ; nom ; etc..colonne J les quantités
je voudrais calculer les quantités par fournisseur en ligne J
if cells(ligne, colonne).value = cells(ligne+1, colonne).value
car tant que c'est le même code fournisseur, je voudrais qu'il prenne en compte dans la somme la quantité
Suis-je clair ? lol
Pas évident !
Merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
17 mars 2008 à 20:06
Bonjour Marilou,
as-tu absolument besoin d'une macro ?
Si tes données sont déjà triées par code fournisseur, un Sous-Total peut te calculer ta somme par fournisseur. (Données/Sous-Total)
Sinon, un tableau croisé dynamique (c'est tout simple à utiliser) ferait aussi vachement bien l'affaire dans ton cas, il me semble.
A suivre...
0
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008
17 mars 2008 à 20:09
Non je pense pas mais le souci c'est que j'ai un fichier par jour sur 9 semaines
j'aimerai par la suite déterminer un volume moyen, min, max et une fréquence de livraison
Ca m'paraissait l'idéal...Non
Et j'aurais utilisé le croisé dynamique pour le final...
Mais je ne suis pas très douée lol
alors peut être as tu la solution ??
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
17 mars 2008 à 21:53
Marilou,
un joli petit tableau croisé dynamique te calculera tes moyennes, tes mini et maxi, et plus si affinité. Douée ou pas douée, ça sera toujours plus simple que des macros. Au pire, ça nécessitera un peu de mise en forme dans tes données de base. As-tu besoin d'aide dans ce sens ?
I.
0
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008
17 mars 2008 à 23:44
Bonjour,
merci, mais oui effectivement je m'y coné peu dans ce genre de tableau non...:-(
je ne savais même pas que l'on pouvait effectuer des calculs...lool
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 mars 2008 à 22:05
nonjour,

Il faut une variable pour faire la somme:

Sub calcul()
Dim somme As Double
somme = 0
ligne=4
colonne=2
while (cells(ligne, colonne)<>0)
if cells(ligne, colonne).value = cells(ligne+1, colonne) then
cells(ligne, colonne+11).Value = somme + cells(ligne, colonne+8)
...

;o)

polux
0
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008
17 mars 2008 à 23:50
Bonjour polux,
j'ai testé mais la macro plante....:-(
j'suis noyée, ça fait déjà un ti bout de temps que j'essaie mais je crois que le vba n'est pas fait pr moi lol
0

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

Posez votre question
Bonjour,

J'ai élaboré cette macro en partant du principe que le code fournisseur en ligne 4 colonne2 servait de comparaison pour toutes les autres cellules de la colonne 2
Si le code Fournisseur est égal à celui de l 4 c 2 alors e l'ajoute aux quantités précédents et le total partiel est en colonne 11. Le dernier code fournisseur de la colonne contient le total cumulé.

Voila la macro

Sub calcul()
Dim ligne As Integer, colonne As Integer
Dim total As Double
ligne = 4
colonne = 2
total = Cells(ligne, 10).Value
Cells(ligne, 11).Value = total
ligne = ligne + 1
While (Cells(ligne, colonne).Value <> 0)
If Cells(4, colonne).Value = Cells(ligne, colonne) Then
total = total + Cells(ligne, 10).Value
Cells(ligne, 11).Value = total
End If
ligne = ligne + 1
Wend
End Sub

Dis moi si j'ai bien compris ou reformule ton problème
A+.
0
marilou_271 Messages postés 19 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 26 août 2008
18 mars 2008 à 19:59
Bonjour,

Désespérée, j'ai cessé les macros merci à tous !
Je me suis lancée dans les tableaux croisés dynamiques et bien sur j'ai bidouillé...C'est ça lorsque l'on est pas douée !!!

Encore merci à tous !!

Marilou
0