Extraction de pourcentage par VBA
Bonjour,
J'ai des données qui sont structurées en fichier Excel. J'aimerais bien faire l'extraction des pourcentages qui sont dans une de mes colonnes.
Je vous donne un exemple du contenu dans ces cellules:
At 31-Dec-2008: Roberto (11.899%) Antonio (23.798%); Maria (11.899%) ; Jose (23.798%) ; Martin (23.798%) , Diego (4.808%)
J'ai trouvé un programme VBA pour l'extraction des pourcentages, qui est comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Public Function wExtractPercent(sInput) As Double
If IsNumeric(sInput) Then
wExtractPercent = sInput
Else
end_position = InStr(sInput, "%")
For i = end_position To 1 Step -1
If Mid(sInput, i, 1) = " " Then
start_position = i
Exit For
End If
Next
If start_position = 0 Then
wExtractPercent = Left(sInput, end_position - 1) / 100
Else
wExtractPercent = Mid(sInput, start_position, end_position - start_position) / 100
End If
End If
End Function |
Ce programme fonctionne bien mais avec quelques imperfections:
Imperfection 01: Avant d'appliquer la fonction wExtractPercent, il faut nettoyer le contenu de la cellule des parenthèses "(" et ")"
Imperfection 02: Avant d'appliquer la fonction wExtractPercent, il faut remplacer le point du pourcentage "." par ","
Imperfection 03: Le programme ci-dessous, lit juste le premier pourcentage dans le contenu et ignore le reste des pourcentages.
Je vous donne ma démarche actuelle pour l'extraction des pourcentages:
Étape 01: Je convertis ma colonne en plusieurs afin d'obtenir un pourcentage dans chaque colonne et non pas plusieurs;
Étape 02: je remplace les parenthèses "(" et ")" par des espaces " ";
Étape 03: je remplace "." par "," ;
Étape 04: j'applique finallement la fonction wExtractPercent qui me donne le pourcentage qui se trouve dans chaque cellule.
Quatre étape ce n'est pas beaucoup pour quelques cellules, mais le problème c'est que j'ai des centaines de milliers de cellules à traiter, et cela devient fastidieux est aussi lourd pour excel.
Ma question est donc la suivante:
Pourriez-vous m'aider à améliorer mon programme/ma fonction VBA ci-dessus pour faire l'extraction en moins d'étapes et d'une façon plus conviviale. Cela me rendra grand service.
Merci d'avance
NB: Jutilise Excel 2016 FR