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 : Sélectionner tout - Visualiser dans une fenêtre à part
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