Somme variable

Bonjour à tous!!

Pour suivre des encours, nous utilisons un fichier excel (extrait ci-joint). Afin de limiter les erreurs de saisie ainsi que les problèmes sur le fichier qui arrivaient de manière récurrente, j'automatise le fichier.

Toutes les entreprises, les lots, les tuples (commandes) sont maintenant ajoutés via macro, les macros utilisent les données dans l'onglet feuille2 pour fonctionner. Celles-ci permettent aussi d’enrichir cet onglet.

Les tuples, fournisseurs et lots sont insérés dans l'onglet feuille1 cependant on insert les lignes dans les catégories correspondantes. Du plus ancien (en bas) vers le plus récent (en haut) pour les tuples.

J'ai besoin de garder une vue consolidée avec des sommes par catégorie (Lot et fournisseur), Je ne parviens pas à créer des formules qui permettent de faire des sommes dans la colonne D:D en fonction des catégories tout en considérant que les emplacements changent à cause des insertions.

J'ai essayé différents arrangements avec indirect mais pas concluant pour le moment.

Formules cibles :

Somme(DX:DY)/2 tous les fournisseurs et tuples jusqu'au prochain lot

Somme(DX:DY) tous les tuples pour un fournisseur

Pourriez-vous me venir en aide s'il vous plait ?

Merci beaucoup d'avance et bonne soirée,

Florian

Bonjour,

Peux-tu expliquer comment tu trouves les nombre en colonne D ?

A+

Bo jour,

Merci pour ton retour.

Le fichier joint est un extrait dépourvu de tout automatisme.

Dans le fichier original les tuples (fond blanc), les fournisseurs (fond gris), les lots (fond rougeatre) sont insérés par macro. Les tuples portent le montant et arrivent avec la macro, donc les formules sur les lignes lot et fournisseur sont des sommes.

Pour le lot c'est une somme de tout le lot, jusqu'à présent tous les éléments (fournisseurs et tuples) jusqu'au prochain lot divisés par 2 ==> une somme étant aussi faite au niveau fournisseur

Pour le fournisseur c'est une somme de tous les éléments jusqu'au prochain fournisseur.

C'est le fonctionnement d'antan, le besoin est d'avoir le montant d'encours par fournisseur sur la ligne du fournisseur, par lot sur la ligne du lot dans la colonne D en sachant que toutes les lignes arrivent par macro.

Dans l'onget 2 il y a des données qui peuvent être intéressantes, ligne à laquelle debute un lot, postionnement des fournisseurs pour chaque lot, derniere ligne de la page etc...

J'espère avoir apporté assez d'information

N'hésite pas à revenir vers moi,

Bonne journée,

Florian

Supprimé. (Double emploi)

Bonjour,

As-tu simplement essayé avec la formule Somme.SI.Ensemble pour des chiffres, et Nombre.SI.Ensemble pour avoir le nombre de quelque chose ?

Si je comprend bien tu voudrais calculer en automatique les cellules jaunes ?

Si pas ça fournir un exemple mis en évidence de ce qui est désiré.

11dflorian.xlsm (24.54 Ko)

Bonsoir,

Merci beaucoup !!

ça marche super bien!^^

Par contre, je ne comprends pas exactement comment ça marche.

Pourquoi la boucle va de 1 à 9 ? a quoi servent les % ? Comment fonctionne exactement STM et ST...?

Si tu te sens le courage de commenter, je suis preneur !^^

En tout cas merci beaucoup.

Florian

bonsoir,

La macro commentée :

Private Sub CommandButton1_Click()
Dim i%, iLR% ' variable% = as intger
Dim ST, STM  'variable non typées
   iLR = [D65000].End(xlUp).Row
   ' Pour chaque ligne à partir de la dernière en remontant
   For i = iLR To 9 Step -1
      If Cells(i, 1) = "" Then 'si la cellule de la colonne A est vide
         ST = ST + Cells(i, 4) 'on effectue un sous-total (ST)
      Else 's'il y a quelque chose dans la cellule de la colonne A
            'C'est soit qu'il faut vider le sous-total (s'il n'est pas vide)
         If ST > 0 Then       'si ST n'est pas vide
            Cells(i, 4) = ST  'on écrit le ST dans la cellule
            STM = STM + ST    'et on le mémorise dans STM pour le prochain cumul de lot
            ST = 0            'puis on le vide
         Else 'Si le ST est déjà vide c'est qu'on doit vider le STM (total de lot)
            Cells(i, 4) = STM 'et on l'crit dans la colonne correspondante
            STM = 0           'et on vide le STM pour le prochain lot
         End If
      End If
   Next
End Sub

Nota : j'ai viré a() et la ligne correspondante (inutile dans ce contexte...) Mais elle pourrait redevenir utile si la feuille comportait plusieurs milliers de ligne...

A+

Top, merci beaucoup.

Une dernière et j'arrête promis .

J'ai essayé de réutiliser ce code pour une autre colonne à savoir F (à terme le code servira pour les colonnes D, F, G, H) mais il y a un décalage, les résultats ne s'inscrivent pas au bon endroit. Je ne parviens pas à comprendre pourquoi, as-tu une idée ?

Ci-joint le fichier de test.

Merci d'avance,

Florian

 Sub majF()
    Dim i%, iLR% ' variable% = as intger
    Dim ST, STM  'variable non typées
      iLR = [F65000].End(xlUp).Row
       ' Pour chaque ligne à partir de la dernière en remontant
      For i = iLR To 9 Step -1
          If Cells(i, 1) = "" Then 'si la cellule de la colonne A est vide
            ST = ST + Cells(i, 6) 'on effectue un sous-total (ST)
         Else 's'il y a quelque chose dans la cellule de la colonne A
               'C'est soit qu'il faut vider le sous-total (s'il n'est pas vide)
            If ST > 0 Then       'si ST n'est pas vide
               Cells(i, 6) = ST  'on écrit le ST dans la cellule
               STM = STM + ST    'et on le mémorise dans STM pour le prochain cumul de lot
               ST = 0            'puis on le vide
            Else 'Si le ST est déjà vide c'est qu'on doit vider le STM (total de lot)
               Cells(i, 6) = STM 'et on l'crit dans la colonne correspondante
               STM = 0           'et on vide le STM pour le prochain lot
            End If
          End If
       Next
    End Sub

Dans la situation actuelle tu fais toujours tes additions sur la colonne 4 même si tu affiche les totaux colonne 6

ST = ST + Cells(i, 4)

Le reste sans changement...

A+

Salut,

En fait le but est de sommer indépendamment pour chaque colonne.

Le code le permet, mais il ne prévoit pas qu'il est des lignes vides je pense.

Par exemple la cellule( 20, 6) est vide et qu'il y a une cellule de somme fournisseur (19,6) puis une cellule de somme de lot (18,6) alors le total de lot sera porté par le fournisseur.

Cela apparait car si un tuple est vide, au tour de boucle suivant ST sera égal à 0, on considère donc alors qu'il a déjà été vidé et donc que nous sommes en train de sommer le lot d'après ce que j'ai compris. Il y a donc création d'un décalage.

Je suis en train d'essayer de résoudre cette limitation, je pense par exemple à ajouter une lettre dans une colonne afin d'ajouter un test supplémentaire dans les conditions et bien s'assurer du type de ligne avant la copie.

Bonne journée

Bonjour,

Fournir un fichier aux petits oignons SVP.

A+

Voici le fichier.

On peut ensuite imaginer de prendre en argument les colonnes à mettre à jour, pour ma part je n'en ai pas besoin!!!

Je fais appel à cette macro de mise à jour après une opération d'insertion de ligne et ça marche nickel.

Merci beaucoup encore.

Bonjour,

En fait je n'ai toujours rien compris à ce que tu demandes... Les tuples moi je connais pas...

Je pense que tu devrais mettre dans ton modèle, à la bonne place et en rouge, le résultat à obtenir (en précisant le cas échéant comment tu l'obtiens !)

A+

Rechercher des sujets similaires à "somme variable"