Créer un système de gestion dynamique des plages avec des tests de performance, Excel VBA
Voici un code VBA détaillé pour créer un système de gestion dynamique des plages avec des tests de performance dans Excel. Cela permet d’ajuster dynamiquement les plages en fonction des entrées de données et de tester la robustesse des formules en vérifiant les performances avec différents volumes de données.
Vue d’ensemble du concept
La gestion dynamique des plages implique :
- Ajuster automatiquement les plages nommées en fonction des modifications de données.
- Effectuer des tests de performance en ajoutant des données dynamiques.
- Gérer les erreurs et exceptions pour éviter les plantages.
Code VBA : Gestion Dynamique des Plages et Test de Performance
Ce script VBA :
1. Définit une plage dynamique qui s’ajuste automatiquement en fonction des données.
2. Applique un test de performance en ajoutant dynamiquement des données de test.
3. Vérifie les métriques de performance et gère les erreurs.
Option Explicit
Sub CreateDynamicRangeAndStressTest()
Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
Dim rngData As Range
Dim stressTestSize As Integer
Dim startTime As Double, endTime As Double
Dim i As Integer
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("DataSheet") ' Modifier si nécessaire
' Déterminer la dernière ligne et la dernière colonne dynamiquement
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
' Définir la plage dynamique
Set rngData = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
' Créer une plage nommée dynamiquement
ws.Names.Add Name:="DynamicDataRange", RefersTo:=rngData
' Test de performance : Ajouter des données de test dynamiquement
stressTestSize = 5000 ' Ajustez pour augmenter/diminuer la taille du test
startTime = Timer ' Démarrer le chronomètre
For i = 1 To stressTestSize
ws.Cells(lastRow + i, 1).Value = "TestData " & i
ws.Cells(lastRow + i, 2).Value = Rnd() * 1000
Next i
' Mettre à jour à nouveau la plage dynamique après avoir ajouté les données du test
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set rngData = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
ws.Names("DynamicDataRange").RefersTo = rngData
endTime = Timer ' Fin du chronométrage
' Afficher les résultats du test de performance
MsgBox "Plage dynamique mise à jour avec " & stressTestSize & " lignes supplémentaires." & vbNewLine & _
"Temps d'exécution : " & Format(endTime - startTime, "0.00") & " secondes", vbInformation, "Résultats du Test de Performance"
End Sub
Explication détaillée
1. Définition de la plage dynamique :
- Le script trouve la dernière ligne et la dernière colonne utilisée dans la feuille de calcul.
- Il crée une plage (
rngData) de la celluleA1à la dernière cellule utilisée. - Une plage nommée « DynamicDataRange » est définie pour suivre cette plage.
2. Test de performance :
- Il ajoute 5000 lignes de test avec des données d’exemple (modifiable via
stressTestSize). - Utilise la fonction
Rnd()pour générer des valeurs aléatoires.
3. Mesure de performance :
- Utilise la fonction
Timerpour mesurer le temps d’exécution. - Affiche le résultat dans une boîte de message.
4. Mise à jour automatique de la plage :
- Après l’ajout des données de test, la plage nommée est mise à jour dynamiquement.
Comment utiliser le code
1. Créez une feuille de calcul nommée "DataSheet".
2. Exécutez la macro depuis l’éditeur VBA (ALT + F11).
3. Observez le temps d’exécution affiché dans la boîte de message.
4. Utilisez la plage nommée (DynamicDataRange) dans vos formules ou tableaux croisés dynamiques.