Automatiser les processus de reformatage des données, Excel VBA
Automatiser les processus de reformatage des données dans Excel à l’aide de VBA (Visual Basic for Applications) peut grandement améliorer l’efficacité des tâches répétitives, notamment lorsqu’il s’agit de manipuler, transformer ou nettoyer des données. Voici un exemple détaillé d’un code VBA qui effectue plusieurs étapes courantes de reformatage des données. Nous allons aborder des tâches telles que :
1. Suppression des lignes vides
2. Conversion des textes en majuscules
3. Suppression des espaces superflus
4. Conversion des dates dans un format spécifique
5. Formatage des nombres
6. Tri des données
Code VBA détaillé
Sub ReformaterDonnees() Dim ws As Worksheet Dim rng As Range Dim cell As Range Dim lastRow As Long Dim lastCol As Long ' Définir la feuille active (ou spécifier une feuille particulière) Set ws = ActiveSheet ' Trouver la dernière ligne et la dernière colonne contenant des données lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Etape 1 : Suppression des lignes vides For i = lastRow To 1 Step -1 If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then ws.Rows(i).Delete End If Next i ' Mettre à jour la dernière ligne après suppression lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Etape 2 : Conversion du texte en majuscules pour toute la plage de données For Each cell In ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then cell.Value = UCase(cell.Value) End If Next cell ' Etape 3 : Suppression des espaces superflus For Each cell In ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then cell.Value = Trim(cell.Value) End If Next cell ' Etape 4 : Conversion des dates dans un format spécifique (JJ/MM/AAAA) For Each cell In ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) If IsDate(cell.Value) Then cell.Value = Format(cell.Value, "dd/mm/yyyy") End If Next cell ' Etape 5 : Formatage des nombres (2 décimales) For Each cell In ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) If IsNumeric(cell.Value) Then cell.NumberFormat = "0.00" ' Format de 2 décimales End If Next cell ' Etape 6 : Tri des données (par exemple, tri croissant de la colonne 1) ws.Sort.SortFields.Clear ws.Sort.SortFields.Add Key:=Range(ws.Cells(1, 1), ws.Cells(lastRow, 1)), _ Order:=xlAscending ws.Sort.SetRange Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) ws.Sort.Header = xlYes ' Si vous avez des en-têtes ws.Sort.Apply ' Alerte de fin de traitement MsgBox "Les données ont été reformattées avec succès!", vbInformation End Sub
Explications détaillées
1. Suppression des lignes vides :
Le code parcourt chaque ligne de bas en haut (pour éviter les problèmes lors de la suppression de lignes) et vérifie si la ligne est vide. Si elle l’est, elle est supprimée à l’aide de la méthode .Delete.
2. Conversion du texte en majuscules :
La boucle For Each parcourt chaque cellule de la plage de données. Si la cellule contient du texte (donnée de type chaîne), elle est convertie en majuscules avec la fonction UCase.
3. Suppression des espaces superflus :
Ici, la fonction Trim est utilisée pour supprimer les espaces avant et après les textes dans chaque cellule.
4. Conversion des dates au format JJ/MM/AAAA :
Si la cellule contient une date, elle est reformattée en utilisant la fonction Format, ce qui permet de définir un format spécifique pour les dates (ici « dd/mm/yyyy »).
5. Formatage des nombres :
Pour les cellules contenant des nombres, on applique un format de deux décimales à l’aide de la propriété NumberFormat. Cela permet de standardiser l’affichage des chiffres.
6. Tri des données :
Le code effectue un tri croissant sur la première colonne (colonne A dans ce cas). Vous pouvez modifier cette section si vous souhaitez trier selon une autre colonne. Le tri est appliqué à toute la plage de données.
Comment utiliser ce code
1. Ouvrez Excel et accédez à l’éditeur VBA (appuyez sur Alt + F11).
2. Dans l’éditeur VBA, insérez un nouveau module (dans le menu Insertion, choisissez Module).
3. Copiez et collez le code ci-dessus dans le module.
4. Exécutez le code en appuyant sur F5 ou en l’assignant à un bouton sur votre feuille Excel.
Personnalisation
Vous pouvez personnaliser ce code en modifiant :
• Les plages de cellules sur lesquelles appliquer les transformations.
• Le format de date ou de nombre selon vos préférences.
• Les critères de tri (par exemple, trier par une autre colonne ou dans un ordre décroissant).
Ce script est un bon point de départ pour automatiser les processus de nettoyage et de reformatage des données dans Excel via VBA.