Boucle et fonction somme

Résolu
marilou_271 Messages postés 19 Statut Membre -  
marilou_271 Messages postés 19 Statut Membre -
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
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. amigo
     
    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
    1. marilou_271 Messages postés 19 Statut Membre
       
      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
  2. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. marilou_271 Messages postés 19 Statut Membre
       
      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
  3. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. marilou_271 Messages postés 19 Statut Membre
       
      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
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    1. marilou_271 Messages postés 19 Statut Membre
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amigo
     
    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
    1. marilou_271 Messages postés 19 Statut Membre
       
      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