Développer un outil de suivi de données personnalisé, Excel VBA
Voici un guide détaillé pour développer un outil de suivi de données personnalisé avec Excel VBA. Le code que je vais partager se concentre sur l’enregistrement, la mise à jour, la suppression et l’affichage de rapports simples sur les données saisies.
Outil de Suivi de Données Personnalisé avec Excel VBA
Vue d’Ensemble
Dans cet exemple, nous allons créer un système de suivi de données simple en utilisant Excel VBA. Ce système va :
1. Permettre à l’utilisateur de saisir des données via un UserForm.
2. Enregistrer ces données dans une feuille de calcul (appelée DataLog).
3. Permettre la modification et la suppression de données existantes.
4. Générer des rapports simples pour analyser les données.
Étapes de Développement :
1. Créer la feuille de suivi des données :
- Cette feuille sera utilisée pour stocker les données saisies via le formulaire.
2. Créer le UserForm VBA :
- Ce formulaire servira d’interface pour que l’utilisateur saisisse les données dans le système.
3. Code VBA pour gérer les opérations de données :
- Cela inclura l’enregistrement des nouvelles données, la mise à jour des données existantes, la suppression de données et la génération de rapports simples.
4. Créer un système de rapport :
- Un rapport de base qui résume les données saisies et les affiche de manière organisée.
1. Créer la Feuille de Suivi des Données
1. Ouvrez un nouveau classeur Excel et créez une nouvelle feuille appelée DataLog.
2. Dans la feuille DataLog, ajoutez les en-têtes suivants dans la ligne 1 :
- ID | Nom | Date d’Entrée | Catégorie | Montant | Commentaires
Ces colonnes serviront à stocker les données saisies via le formulaire.
2. Créer le UserForm VBA
1. Ouvrez l’éditeur Visual Basic for Applications (VBA) en appuyant sur Alt + F11.
2. Insérez un UserForm en cliquant sur Insertion > UserForm.
3. Concevez le UserForm avec les éléments suivants :
- TextBox1 : Pour l’ID (auto-généré)
- TextBox2 : Pour le Nom
- TextBox3 : Pour la Date d’Entrée
- TextBox4 : Pour la Catégorie
- TextBox5 : Pour le Montant
- TextBox6 : Pour les Commentaires
- CommandButton1 : Pour « Sauvegarder les données »
- CommandButton2 : Pour « Mettre à jour les données »
- CommandButton3 : Pour « Supprimer les données »
- CommandButton4 : Pour « Générer le rapport »
3. Code VBA pour les Opérations de Données
Maintenant, ajoutons le code VBA pour gérer les opérations des données.
Code pour Sauvegarder les Données
Nous allons créer un macro qui enregistre les données saisies dans le UserForm dans la feuille DataLog.
Private Sub CommandButton1_Click()
' Déclarer les variables
Dim ws As Worksheet
Dim lastRow As Long
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("DataLog")
' Trouver la dernière ligne vide dans la feuille DataLog
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
' Écrire les données dans la ligne suivante
ws.Cells(lastRow, 1).Value = lastRow - 1 ' ID auto-généré
ws.Cells(lastRow, 2).Value = TextBox2.Value ' Nom
ws.Cells(lastRow, 3).Value = TextBox3.Value ' Date d'Entrée
ws.Cells(lastRow, 4).Value = TextBox4.Value ' Catégorie
ws.Cells(lastRow, 5).Value = TextBox5.Value ' Montant
ws.Cells(lastRow, 6).Value = TextBox6.Value ' Commentaires
' Vider les champs du formulaire après l'enregistrement
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
' Message de confirmation
MsgBox "Données sauvegardées avec succès !", vbInformation
End Sub
Explication :
- Cette procédure écrit les valeurs du formulaire dans la première ligne vide de la feuille DataLog.
- L’ID est généré automatiquement en fonction de la ligne suivante.
- Après avoir sauvegardé les données, les champs du formulaire sont réinitialisés pour une nouvelle saisie.
Code pour Mettre à Jour les Données
Nous allons maintenant créer un code pour mettre à jour les données en fonction de l’ID saisi par l’utilisateur.
Private Sub CommandButton2_Click()
' Déclarer les variables
Dim ws As Worksheet
Dim lastRow As Long
Dim foundRow As Long
Dim userID As Long
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("DataLog")
' Récupérer l'ID de l'utilisateur
userID = TextBox1.Value
' Vérifier si l'ID est valide
If userID = 0 Then
MsgBox "Veuillez entrer un ID valide", vbExclamation
Exit Sub
End If
' Trouver la ligne correspondante à l'ID
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
foundRow = 0
For i = 2 To lastRow
If ws.Cells(i, 1).Value = userID Then
foundRow = i
Exit For
End If
Next i
' Si l'ID n'est pas trouvé, afficher un message d'erreur
If foundRow = 0 Then
MsgBox "ID non trouvé.", vbExclamation
Exit Sub
End If
' Mettre à jour les données
ws.Cells(foundRow, 2).Value = TextBox2.Value ' Nom
ws.Cells(foundRow, 3).Value = TextBox3.Value ' Date d'Entrée
ws.Cells(foundRow, 4).Value = TextBox4.Value ' Catégorie
ws.Cells(foundRow, 5).Value = TextBox5.Value ' Montant
ws.Cells(foundRow, 6).Value = TextBox6.Value ' Commentaires
' Message de confirmation
MsgBox "Données mises à jour avec succès !", vbInformation
End Sub
Explication :
- La macro recherche l’ID saisi dans le formulaire et trouve la ligne correspondante dans la feuille.
- Si l’ID existe, les données sont mises à jour avec les nouvelles valeurs du formulaire.
- Si l’ID n’existe pas, un message d’erreur est affiché.
Code pour Supprimer les Données
Créons maintenant une macro pour supprimer une entrée en fonction de l’ID saisi.
Private Sub CommandButton3_Click()
' Déclarer les variables
Dim ws As Worksheet
Dim lastRow As Long
Dim foundRow As Long
Dim userID As Long
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("DataLog")
' Récupérer l'ID de l'utilisateur
userID = TextBox1.Value
' Vérifier si l'ID est valide
If userID = 0 Then
MsgBox "Veuillez entrer un ID valide", vbExclamation
Exit Sub
End If
' Trouver la ligne correspondante à l'ID
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
foundRow = 0
For i = 2 To lastRow
If ws.Cells(i, 1).Value = userID Then
foundRow = i
Exit For
End If
Next i
' Si l'ID n'est pas trouvé, afficher un message d'erreur
If foundRow = 0 Then
MsgBox "ID non trouvé.", vbExclamation
Exit Sub
End If
' Supprimer la ligne
ws.Rows(foundRow).Delete
' Message de confirmation
MsgBox "Données supprimées avec succès !", vbInformation
End Sub
Explication :
- La macro recherche l’ID et supprime la ligne correspondante si l’ID est trouvé.
- Si l’ID n’existe pas, un message d’erreur est affiché.
Code pour Générer un Rapport Simple
Enfin, créons une fonction pour générer un rapport simple qui résume les données.
Private Sub CommandButton4_Click()
' Déclarer les variables
Dim ws As Worksheet
Dim lastRow As Long
Dim reportRange As Range
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("DataLog")
' Obtenir la dernière ligne avec des données
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Définir la plage à imprimer (exclure les en-têtes)
Set reportRange = ws.Range("A1:F" & lastRow)
' Copier et générer un rapport dans un nouveau classeur
reportRange.Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs "RapportDonnées.xlsx"
' Message de confirmation
MsgBox "Rapport généré avec succès !", vbInformation
End Sub
Explication :
- Cette fonction copie les données de la feuille DataLog et génère un nouveau classeur avec ces données.
- Le rapport est enregistré sous le nom « RapportDonnées.xlsx ».
Conclusion
Avec cet outil VBA dans Excel, vous pouvez facilement suivre, mettre à jour, supprimer et générer des rapports pour vos données. Le système est flexible et peut être étendu avec des fonctionnalités supplémentaires, telles que l’ajout de filtres pour les rapports, l’amélioration de l’interface du UserForm ou l’ajout de validations de données plus complexes.