Excel automatiser achats cases à cocher

Automatiser vos achats avec des cases à cocher et suivi du montant total



🎯 Dans ce tutoriel Excel, je vais vous montrer comment automatiser vos achats avec des cases à cocher pour obtenir automatiquement un suivi de votre liste et le montant total.


✅ Grâce aux cases à cocher, vous pouvez facilement organiser votre listre d'achats en ajoutant des articles avec leurs quantités.


👍 Ainsi, vous obtenez instantanément le coût des articles par ligne, mais aussi, le total cumulé de votre liste d'achats.


🗑️ De plus, selon vos besoins, vous avez la possibilité de supprimer une ou plusieurs lignes, mais aussi d'effacer en une seule fois toutes les lignes enregistrées dans votre liste.


⌚ En utilisant les cases à cocher pour créer votre liste d'achats automatisée, cela vous permet de gagner du temps.



Voir la vidéo pour découvrir les différentes étapes :



Utiliser les cases à cocher pour créer une liste d'achats avec montant total



Pour vous entraîner et répéter les étapes du tutoriel :

-> Télécharger le fichier Excel utilisé dans la vidéo.

👇
Après avoir ouvert le lien :
  • vous cliquez sur "Fichier",
  • puis sur "Enregistrer sous", ou sur "Créer une copie",
  • et sur "Télécharger une copie".



📌↪️→ Code VBA à utiliser pour autoatiser vos achats avec des cases à cocher :


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsProduit As Worksheet
    Dim wsListe As Worksheet
    Set wsProduit = Sheets("Produits") ' Assurez-vous que le nom est correct
    Set wsListe = Sheets("Liste d'achats") ' Assurez-vous que le nom est correct

    ' Vérifiez si la cellule modifiée est E2 pour décocher toutes les cases à cocher
    If Not Intersect(Target, wsProduit.Range("E2")) Is Nothing Then
        If Target.Value = True Then
            ' Déterminer la dernière ligne utilisée dans la colonne A
            Dim lastRowProduit As Long
            lastRowProduit = wsProduit.Cells(wsProduit.Rows.Count, "A").End(xlUp).Row
            
            wsProduit.Range("A2:A" & lastRowProduit).Value = False
            
            ' Réinitialiser la case à cocher dans E2
            wsProduit.Range("E2").Value = False
            
            wsProduit.Range("E2").HorizontalAlignment = xlCenter
            wsProduit.Range("E2").VerticalAlignment = xlCenter
            wsProduit.Range("E2").Interior.Color = RGB(232, 232, 232)
            wsProduit.Range("E2").Font.Bold = True
        End If
        Exit Sub
    End If

    Dim Quantité As Variant
    Dim Produit As String
    Dim Tarif As Double
    Dim Total As Double
    Dim lastRowListe As Long
    Dim cel As Range

    ' Parcourir chaque cellule modifiée individuellement pour les cases à cocher dans la colonne A
    For Each cel In Target
        If Not Intersect(cel, wsProduit.Columns("A")) Is Nothing Then
            ' Vérifiez si la valeur de la cellule est VRAI (case cochée)
            If cel.Value = True Then
                ' Demander la quantité tant qu'une quantité valide n'est pas entrée
                Do
                    Quantité = InputBox("Entrez la quantité pour " & cel.Offset(0, 1).Value & " :", "Quantité")
                   
                    If Quantité = False Then Exit Sub
                Loop While Not IsNumeric(Quantité) Or Quantité <= 0

                ' Convertir Quantité en nombre
                Quantité = CInt(Quantité)
                
                ' Récupérer les informations du produit
                Produit = cel.Offset(0, 1).Value
                Tarif = cel.Offset(0, 2).Value
                Total = Quantité * Tarif

                ' Trouver la dernière ligne utilisée sur la deuxième feuille
                With wsListe
                    lastRowListe = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                    ' Enregistrer les informations sur la deuxième feuille
                    .Cells(lastRowListe, 1).Value = Quantité
                    .Cells(lastRowListe, 2).Value = Produit
                    .Cells(lastRowListe, 3).Value = Total
                    
                    ' Mettre à jour le montant total cumulé
                    .Range("E2").Value = WorksheetFunction.Sum(.Range("C2:C" & lastRowListe))
                    
                    .Range("E2").HorizontalAlignment = xlCenter
                    .Range("E2").VerticalAlignment = xlCenter
                    .Range("E2").Interior.Color = RGB(232, 232, 232)
                    .Range("E2").Font.Bold = True
                End With
            ElseIf cel.Value = False Then
                ' Si la case est décochée, supprimer la ligne correspondante
                Produit = cel.Offset(0, 1).Value
                With wsListe
                    For lastRowListe = .Cells(.Rows.Count, "B").End(xlUp).Row To 2 Step -1
                        If .Cells(lastRowListe, 2).Value = Produit Then
                            .Rows(lastRowListe).Delete
                            Exit For
                        End If
                    Next lastRowListe

                    ' Mettre à jour le montant total cumulé après suppression
                    lastRowListe = .Cells(.Rows.Count, "A").End(xlUp).Row
                    .Range("E2").Value = WorksheetFunction.Sum(.Range("C2:C" & lastRowListe))
                    
                    ' Réappliquer l'alignement centré à la cellule E2
                    .Range("E2").HorizontalAlignment = xlCenter
                    .Range("E2").VerticalAlignment = xlCenter
                    .Range("E2").Interior.Color = RGB(232, 232, 232)
                    .Range("E2").Font.Bold = True
                End With
            End If
        End If
    Next cel
End Sub




➡️  Pour ceux qui ne dispose pas de la version Excel 365, je vous invite à visionner ce tutoriel :










    

Posts les plus consultés de ce blog

Suivi des stocks et inventaire avec alerte

Listes déroulantes multi-sélections

Cases à cocher interactives sur Excel