Automatiser les processus de séparation des données, Excel VBA

Automatiser les processus de séparation des données, Excel VBA
Automatiser la séparation des données dans Excel à l’aide de VBA (Visual Basic for Applications) peut grandement faciliter des tâches répétitives comme l’extraction d’informations spécifiques dans une cellule ou la division de données dans une colonne. Voici un exemple détaillé d’un code VBA pour automatiser le processus de séparation des données :
Objectif du code :
Le code suivant séparera les données contenues dans une cellule (par exemple, une adresse complète ou une liste de valeurs séparées par un délimiteur comme une virgule ou un espace) en plusieurs colonnes. Ce processus est souvent utilisé pour transformer des données mal formatées en un format plus structuré.
________________________________________
Exemple de scénario :
Supposons que vous avez une colonne où chaque cellule contient une série de noms et prénoms séparés par une virgule (par exemple : « Dupont, Jean »). Vous voulez séparer les noms et prénoms dans deux colonnes distinctes.
Code VBA détaillé :
1. Accéder à l’éditeur VBA :
Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
Créez un nouveau module en cliquant sur Insertion > Module.
2. Code VBA :

Sub SeparateurDeDonnees()
' Déclarez les variables nécessaires
Dim ws As Worksheet
Dim cell As Range
Dim Delimiteur As String
Dim Ligne As Long
' Assurez-vous que vous travaillez sur la feuille active
Set ws = ThisWorkbook.Sheets("Feuil1") ' Remplacez "Feuil1" par le nom de votre feuille
' Choisir le délimiteur utilisé pour séparer les données
Delimiteur = ", " ' Ici, nous séparons par une virgule et un espace. Changez-le si nécessaire.
' Boucle à travers chaque cellule de la colonne A (ou modifiez la colonne souhaitée)
For Each cell In ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Range de A2 jusqu'à la dernière cellule de la colonne A
' Sépare les valeurs basées sur le délimiteur
valeurs = Split(cell.Value, Delimiteur) ' Cette fonction divise la cellule en fonction du délimiteur
' Mettez les données séparées dans des colonnes adjacentes
If UBound(valeurs) >= 0 Then cell.Offset(0, 1).Value = valeurs(0) ' Colonne B = Nom
If UBound(valeurs) >= 1 Then cell.Offset(0, 2).Value = valeurs(1) ' Colonne C = Prénom
Next cell
MsgBox "Séparation terminée avec succès !"
End Sub

Explication détaillée du code :
1. Déclarations de variables :
ws : Référence à la feuille de calcul active.
cell : Une variable pour chaque cellule dans la plage que nous voulons traiter.
Delimiteur : La chaîne de caractères qui définit le séparateur (dans cet exemple, une virgule suivie d’un espace).
Ligne : Compteur de ligne (utilisé dans les boucles si nécessaire).
2. Accès à la feuille de calcul :
Set ws = ThisWorkbook.Sheets(« Feuil1 ») définit la feuille active sur laquelle nous voulons travailler. Vous pouvez changer « Feuil1 » par le nom réel de la feuille.
3. Boucle For Each :
Cette boucle parcourt toutes les cellules de la colonne A (à partir de la ligne 2 jusqu’à la dernière cellule contenant des données).
ws.Cells(ws.Rows.Count, « A »).End(xlUp).Row permet de trouver automatiquement la dernière cellule non vide dans la colonne A, ce qui est pratique pour éviter de traiter des lignes vides.
4. Séparation des données :
Split(cell.Value, Delimiteur) divise le contenu de chaque cellule en fonction du délimiteur spécifié (par exemple, une virgule suivie d’un espace). Cela génère un tableau de valeurs.
5. Affectation des valeurs séparées aux colonnes suivantes :
cell.Offset(0, 1).Value = valeurs(0) place la première partie des données dans la colonne B.
cell.Offset(0, 2).Value = valeurs(1) place la deuxième partie dans la colonne C.
6. Message de confirmation :
MsgBox « Séparation terminée avec succès! » affiche un message une fois que toutes les données ont été séparées et copiées dans les colonnes appropriées.
________________________________________
Exemple d’entrée et de sortie :
Avant :
A
Dupont, Jean
Martin, Claire
Lefevre, Paul
Après l’exécution du code :
A B C
Dupont, Jean Dupont Jean
Martin, Claire Martin Claire
Lefevre, Paul Lefevre Paul
________________________________________
Autres personnalisations possibles :
1. Séparateur différent : Si vous avez un autre séparateur (par exemple, un espace, un point-virgule, etc.), changez simplement la variable Delimiteur :

Delimiteur = " " ' Séparation par espace

2. Plage différente : Si vos données ne se trouvent pas dans la colonne A, vous pouvez modifier la plage de la ligne suivante :
For Each cell In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)

3. Traitement de plusieurs délimiteurs : Si vous souhaitez gérer plusieurs délimiteurs (par exemple, virgule ou point-virgule), vous pouvez ajouter des conditions dans la fonction Split.
________________________________________
Conclusion :
Ce script VBA fournit une méthode simple pour automatiser la séparation de données dans Excel. Il peut être facilement personnalisé pour traiter différents types de données ou pour diviser des données de manière plus complexe selon vos besoins.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x