Menu

Somme critérielle dans une base de données [Résolu]

Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 7 mars 2018 à 06:36 - Dernière réponse : Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention
- 10 mars 2018 à 00:49
Bonjour,
Je travaille actuellement sur un projet de BD consistant à comptabiliser des retours ou envois de palettes avec nos clients. En ligne 1 et de la colonne A à F nous avons: Date/ Client /Mouvement/Avoir Precedent /Solde
Si par exemple au 02/02/18 le client x a ramené 12 palettes et qu'il avait nos 20 palettes le solde sera 20-12=8 palettes
Ensuite au 14/02/18 on l'envoit 5 palettes alors il en aura maintenant 5+8=13 palettes
Le problème c'est que je n'arrive pas définir une fonction VBA afin d'actualiser automatiquement l'état des palettes dans le tableau vu qu'il y a plusieurs clients (calcul automatique des avoirs et du solde de palettes en fonction du client en question).
Merci beaucoup d'avance God Bless U
NB: Une solution en formule Excel aussi serait gentille.

Afficher la suite 

Votre réponse

8 réponses

michel_m 15352 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 7 mars 2018 à 08:32
0
Merci
Bonjour

peut-^tre...
un exemple ressemblant avec des formules Excel (rechercheV, sommeprod...)
https://mon-partage.fr/f/jTvVwJNd/
Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 8 mars 2018 à 00:25
Merci quand meme mais l'exemple n'est pas en rapport avec la nature de ma requete si on pouvait joindre un fichier excel peut etre serais je plus explicite.
Mais Imaginons toujours selon l'exemple de depart que :
- 05/03/18 il y a envoi de 12 palettes au client A qui en possedait 14 ainsi solde restant = 12+14=26
-06/03/18 retour de 24 palettes du client B qui en possedait 16 d'ou le solde = 24- 16=8
-07/02/18 retour de 15 par client A qui en possede mtn une quantité correspondant au solde dernier soit 26 d'ou le nouveau solde restant est 26-15= 11
Ainsi de suite pour les autres clients. J'ai fais un formulaire vba pour enregistrer automatiquement les saisies dans les cellules situées en dessous de la ligne 1 avec pour colonnes allant de : Date, Mouvement,Qté Precedente,Solde restant.
Je voudrais donc que lorsqu'on enregistre un mème client a un autre jour sa situation s'actualise automatiquement, en occurence les qtés precedentes et le solde restant en fonction bien sur de sa situation anterieure a cette nouvel saisie...(Excusez moi si j'ai trop ecrire c'est pour mieux detailler le probleme de depart)
Remerci encore d'avance
michel_m 15352 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 8 mars 2018 à 08:19
Bonjour

Mettre le classeur sans données confidentielles en pièce jointe sur
https://mon-partage.fr/
Puis faire un clic droit copier le raccourci et coller dans votre message

Dans l’attente
Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 8 mars 2018 à 20:22
https://mon-partage.fr/f/wzjBF4Nd/

Bien merci encore.ci haut le lien apres partage de mon fichier source
Commenter la réponse de michel_m
yg_be 5791 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 8 mars 2018 à 20:26
0
Merci
bonsoir, connais-tu les tableaux croisés dynamiques?
Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 9 mars 2018 à 16:31
Susu un tableau croisé dynamique ferait bien l'affaire sauf que cela m'obligerais a enregistrer en vrac les infos et a les filtrer via un TCD mais cest ausssi une bonne solution a mon probleme merci j'appliquerait ça.
Toutefois j'ai aussi opté pour une resolution via vba ...je recherche un code du genre si cells(2,1)= Client A alors cells(2,2) qui est la celulle "avoir precedent" recoit le "solde reestant" passé du client A contenu sur la ligne precedente dans la cellule Cells(1,3)
Le probleme cest que je ne gere pas client par client car chaque enregistrement peut concerner un client different d'ou le soucis de trouver une parade pour que les calculs (avoir precedent qui est en fait le solde precedent du clent x et son nouveau solde ) se fasse dès un nouvel enregistrement.
Am I clear now? Voila pkw je me contenterai bien d'une formule excel ausssi en attendant . Merci encore d'avance
yg_be 5791 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention > Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 9 mars 2018 à 19:19
je n'ai pas compris pourquoi un TCD ne te convenait pas totalement.
Luronco27 12 Messages postés mercredi 20 décembre 2017Date d'inscription 10 mars 2018 Dernière intervention - 10 mars 2018 à 00:49
Susu mais j'ai voulu tout de meme tester qqchose en vba.
Ok apres plusieurs essais j'en suis arrivé au fait que le probleme etait tres simple il me fallait juste enregistrer les envois de palettes positives et les retours negatifs et appliquer Sumif .

Private Sub Btnrepartition_Click()
Dim lr As Integer '  pour la derniere ligne
Sheets("Suivi").Activate
Range("A4").Select
If Range("A5") = "" Then lr = Range("A5").Row Else lr = Range("A4").End(xlDown).Row + 1
If MsgBox("Confirmez-vous l'ajout de cette saisie?", vbYesNo, "Ajout") = vbYes Then
       Cells(lr, 1) = Now
       Cells(lr, 2) = CboMvt 'pour le type de mouvement Envoi ou retour
       If Cells(lr, 2) = "Retour" Then Cells(lr, 3) = -1 * 
         CInt(Txtpal) Else Cells(lr, 3) = CInt(Txtpal) ' pour enregistrer les qté envoyées ou ramenées de palettes
       Cells(lr, 4) = CboClient
      If lr = Range("A5").Row Then Cells(lr, 5) = 0 
Else:Cells(lr,5).Value=Application.WorksheetFunction.SumIf(Range("T_Client"), Cells(lr, 4).Value, Range("T_Palettes")) ' pour enfin calculer le solde de palettes restantes
End If
End Sub



Mille merci encore a tous
Commenter la réponse de yg_be