Somme critérielle dans une base de données

Résolu/Fermé
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 - Modifié le 7 mars 2018 à 06:57
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 - 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.

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
7 mars 2018 à 08:32
Bonjour

peut-^tre...
un exemple ressemblant avec des formules Excel (rechercheV, sommeprod...)
https://mon-partage.fr/f/jTvVwJNd/
0
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 2
Modifié le 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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
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
0
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 2
8 mars 2018 à 20:22
https://mon-partage.fr/f/wzjBF4Nd/

Bien merci encore.ci haut le lien apres partage de mon fichier source
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
8 mars 2018 à 20:26
bonsoir, connais-tu les tableaux croisés dynamiques?
0
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 2
Modifié le 9 mars 2018 à 16:37
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
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019
9 mars 2018 à 19:19
je n'ai pas compris pourquoi un TCD ne te convenait pas totalement.
0
Luronco27 Messages postés 17 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 10 janvier 2019 2
Modifié le 10 mars 2018 à 01:23
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
0