Famille de feuilles de calcul Microsoft avec des outils pour l’analyse, le graphique et la communication des données.
Bonjour
Je n'ai pas de doc particulière à te recommander.
Comme dans ma première réponse je te disais que c'était surement optimisation.
J'étais resté sur le principe d'une fonction vu que partais de là.
Le VBA est lent comme langage (interprété) et dans ce cas c'est pire car en utilisant une fonction ainsi Excel recherche 10 fois les 10 occurrences et ce pour chaque ligne !
1 millions de lignes = 100 millions de recherches !
Je te propose ceci à tester :
Sub Extraction()
Dim LigneDeb As Long
Dim reg As Object
Dim Resultats As Object
Dim lg As Long
Dim i As Byte
Application.ScreenUpdating = False
LigneDeb = Selection.Rows(1).Row
Set reg = CreateObject("vbscript.regexp")
reg.Global = True
reg.Pattern = "\d+.?\d*%"
For lg = 1 To Selection.Rows.Count
Set Resultats = reg.Execute(Range("B" & LigneDeb + lg - 1)) 'Colonne B
For i = 1 To Resultats.Count
Cells(lg + LigneDeb - 1, i + 2) = Replace(Replace(Resultats.Item(i - 1), ".", ","), "%", "") / 100 '+2 Pour colonne C, +3 pour colonne D....
Next
Next
Set reg = Nothing
Application.ScreenUpdating = True
End Sub
C'est une procédure, tu sélectionnes les données colonne B (Sélection de la 1ere cellule puis CTRL+MAJ+Flèche Bas) puis tu exécutes la procédure qui va générer les valeurs en colonne C, D,....
C'est plus rapide (10s pour 100 000 lignes).