1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Sub CopyData()
' Déclaration des variables
Dim wsTableau As Worksheet
Dim wsTemp As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cellValue As String
Dim splitValues() As String
' Définition des feuilles de calcul
Set wsTableau = ThisWorkbook.Sheets("Tableau")
Set wsTemp = ThisWorkbook.Sheets("Temp")
' Trouver la dernière ligne de données dans la colonne C de la feuille "Tableau"
lastRow = wsTableau.Cells(wsTableau.Rows.Count, "C").End(xlUp).Row
' Boucle à travers les cellules de la colonne C de la feuille "Tableau"
For i = 7 To lastRow
' Récupérer la valeur de la cellule courante
cellValue = wsTableau.Cells(i, "C").Value
' Vérifier si la cellule contient un signe "+"
If InStr(cellValue, "+") > 0 Then
' Si oui, diviser les valeurs en utilisant le signe "+" comme séparateur
splitValues = Split(cellValue, "+")
' Supprimer les espaces avant et après chaque valeur
For J = LBound(splitValues) To UBound(splitValues)
splitValues(J) = Trim(splitValues(J))
Next J
' Copier les valeurs divisées dans la feuille "Temp"
wsTemp.Cells(wsTemp.Rows.Count, "C").End(xlUp).Offset(1, 0).Resize(UBound(splitValues) + 1).Value = Application.Transpose(splitValues)
Else
' Si non, copier la valeur dans la feuille "Temp" après avoir supprimé les espaces avant et après
wsTemp.Cells(wsTemp.Rows.Count, "C").End(xlUp).Offset(1, 0).Value = Trim(cellValue)
End If
Next i
' Trouver la dernière ligne de données dans la colonne C de la feuille "Temp"
lastRow = wsTemp.Cells(wsTemp.Rows.Count, "C").End(xlUp).Row
' Supprimer les doublons et trier les données par ordre alphabétique
With wsTemp.Range("C6:C" & lastRow)
.RemoveDuplicates Columns:=1, Header:=xlNo
.Sort Key1:=wsTemp.Range("C7"), Order1:=xlAscending, Header:=xlNo
End With
End Sub |
Partager