Bouton sur Excel qui applique l'addition et qui vide une table


#1

Bonjour j’ai crée un tableau dans le quel il fait la somme de plusieurs casses dans une casse que j’ai nommé Total ( une casse dynamique qui change a chaque fois je vide la table et je la remplis a nouveau )et en bas de cette casse je veux qu’il prennent la somme de la casse Total (cellule qui cumul que j’ai nommé " Total Journée ) voila c mon souci en gros ,j’aimerai crée un bouton ( Valider ) qui prends en charge ma requet , merci a vous .


#2

Bonsoir @mahinfos4,

Voici une proposition:

De “B2 à B15” Table des données.
En “B16” Sous Total.
En “B17” Total Journée cumulée.

Code VBA dans la Feuil1

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range("B2:B15")) Is Nothing And Target.Count = 1 Then
        Range("B16") = [Sum(B2:B15)]
    End If

End Sub

Dans Module1 associé au bouton "Total Journée"

Sub Total_Journée()

    Dim Total As Long
    Dim SousTotal As Long
    Application.ScreenUpdating = False
    
        Range("B16").Select
        SousTotal = ActiveCell
        Range("B17").Select
        Total = ActiveCell + SousTotal
        ActiveCell = Total
        Range("B16").Select
        ActiveCell.ClearContents
        Range("B2:B15").Select
        Selection.ClearContents
        Range("B17").Select

End Sub

Dans Module2 associé au bouton "RAZ Journée"

Sub RAZ()

    Range("B17").Select
    Selection.ClearContents
        
End Sub

Comme tu n’as pas fourni de fichier Excel, je te laisse adapter ces codes à ton fichier.

Fichier exemple ICI==> mahinfos4 V1.xlsm (21,5 Ko)

Cordialement.


#3

Bonsoir;
Je vous remercie mdo100 , la je suis pas sur mon pc j’ai essayer d’ouvrir le fichier que tu ma envoyer avec Google drive mais apparement il prends pas ton Code en charge , dés que je le serai je vous envoie une copie de mon fichier , et je vous tiens au courant merci infiniment :wink:


#4

Bonsoir tout le monde

@mdo100 j’ai envoyer un msg au privé je sais pas si vous lavez reçu ou bien non si c le cas fais moi un signe svp merci .


#5

Bonsoir @mahinfos4,

Oui, j’ai bien eu ton message, mais c’est un long travaille que tu demandes, tout est a faire et surtout, il n’a rien a voir avec la demande initiale.

Tu aurais pu aussi le publier directement sur le forum, car il ne comporte aucunes données confidentielles et surtout nous aurions pu nous mettre à plusieurs pour faire le fichier.

En tout cas, j’ai commencé, mais j’ai aussi plusieurs fer au feu et parfois, je décroche un peu pour aider d’autre personne, ce qui me permet de revenir sur ton fichier avec des idées plus clair.

Donc soit un peu patient, sinon publie le directement sur le forum.

Cordialement.


#6

Re , ok chef :stuck_out_tongue: je vais le posté ici au meme temps je suis patient lol c été juste pour savoir si tu a bien recu mon fichier :wink: et fait a ton aise, merci a vous Caisse.xlsx (269,2 Ko)


#7

Bonsoir @mahinfos4,

Je te livre le travail déjà effectué sur ton fichier, donne moi ton avis !

Dans la feuille "Caisse"
En “H4” j’ai mis la formule =MAINTENANT() elle m’est utile pour enregistrer la caisse dans la feuille “JOURNAL2”, j’y reviendrais…

Toujours dans la feuille "Caisse"
Colonne “B” liste déroulante pour choisir les “id”

Colonne “C”
=SIERREUR(RECHERCHEV($B5;Tableau;2;0);"")

Colonne “D”
=SIERREUR(RECHERCHEV($B5;Tableau;8;0);"")

Colonne “F”
=SIERREUR(SOMME(D5*E5);"")

Colonne “G”
=SIERREUR(SI(RECHERCHEV($B5;Tableau;3;0)-$E5<=0;"Stock = 0";RECHERCHEV($B5;Tableau;3;0)-$E5);"")

Voir aussi dans le “Gestionnaire de noms”

Avec le bouton “Valider” tout va se cumuler dans la feuille que j’ai nommé “JOURNAL2” avec cette macro.

Sub Caisse()
 Dim sh1 As Worksheet, sh2 As Worksheet, x%, i%
 Dim LR%, M%
  Set sh1 = Sheets("Caisse"):
  Set sh2 = Sheets("JOURNAL2")
  
  Application.ScreenUpdating = False
  
   x = sh2.Cells(Rows.Count, 2).End(xlUp).Row + 1
   
    With sh1
        LR = .Cells(.Rows.Count, 2).End(xlUp).Row
        If LR < 21 Then M = .Cells(.Rows.Count, 2).End(xlUp).Row Else M = 20
        For i = 5 To M
        Range("B" & i).Resize(, 5).Copy
        sh2.Range("B" & x).PasteSpecial xlPasteValues
        sh2.Range("A" & x) = Format(CDate(.Range("H4")), "dd/mm/yyyy hh:mm")
        x = x + 1
        Next
    End With
 Application.CutCopyMode = True
 
 On Error Resume Next
  Sheets("Caisse").Select
  Range("B5:G20").SpecialCells(xlCellTypeConstants, 23).ClearContents
 On Error GoTo 0
End Sub

Colonne "A"
Date & Heure

Colonne "B"
ID

Colonne "C"
Produits

Colonne "D"
Prix_U

Colonne "E"
Quantité

Colonne "F"
Total

A la fin de l’exécution de la macro on efface les données de la feuille “Caisse” de “B5 à G20”.

Dans la feuille “Bilan Caisse Ticket”

Colonne “A”
=SI($B2<>"";NBVAL($B$2:B2);"")

Colonne “B”
=SIERREUR(INDEX(Date;EQUIV(0;INDEX(NB.SI(B$1:B1;Date);0;0);0)); "")

Colonne “C”
=SIERREUR(MOD(B2;1);"")

Colonne “D”
=SOMMEPROD((Date=$B2)*Total)

Dans la feuille “Bilan Caisse par Jour”

Colonne “A”
=SI($B2<>"";NBVAL($B$2:B2);"")

Colonne “B”
=SIERREUR(INDEX(ENT(Date);EQUIV(0;INDEX(NB.SI(B$1:B1;ENT(Date));0;0);0)); "")

Colonne “C”
=SOMMEPROD((ENT(Date)=$B2)*Total)

Voici le fichier avancé ICI==> mahinfos4 Planning.xlsm (339,1 Ko)

Donc voilà ou j’en suis, ton avis est décisif dans ma continuation, tes remarques critiques aussi.

N’oublie pas non plus que nous sommes en période de fêtes :tada: :boom: :christmas_tree: et qu’une pause s’impose, j’ai 2 petits enfants qui veulent passer quelques temps avec leur papy mdo100 :wink:

Regarde et dit moi !

Cordialement.


#8

Bonsoir,

wow rien a dire, merci merci infiniment t’as vraiment tout fait , je viens de voir le fichier sur google drive c parfait avec tout c macros et formules rien a dire, reste de le tester chez moi demain et je vous tiens au courant , je vous souhaite une bonne fete a toi et a la maman et tés deux petits enfants , j’espere que g été pas lourd avec la tache que g été confier :slight_smile: a bientôt monsieur , encore merci


#9

Bonsoir :slight_smile: , une dernière suggestion après je te laisse trankil lol :smiley:

si c possible, quand je clique sur ENTER le curseur ce déplace de la cellule B5 a B6, j’aimerai avoir un code ou une formule qui crée une copie de la ligne 5 avec même couleur et formue des cellules et qui la colle dans la ligne 6 , comme si je le fait manuellement quand je selectionne les casses ( b5 c5 d5 e5 f5 g5 ) au meme temps et de pti coin je tire vers le bas, voila normalement c tout pour cette année lol