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 :
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 :