Re : Séparation des paramètres d'une équation
Bonjour,
Une piste avec le code suivant à copier dans un module standard.
Je me suis référé à votre énoncé pour obtenir ce qui est dit.
FONCTIONNEMENT
Sélectionnez la plage des équations (mais sur UNE seule colonne
Ex : B1:B12) et lancez la macro "ParamEquation".
ATTENTION
Faites un test sur une copie de votre classeur. Les résultats s'inscrivant à partir de
la colonne sélectionnée + 2 colonnes et suivantes, si ces colonnes contiennent déjà
des données elles seront écrasées.
D'autre part, la macro ne fonctionne qu'avec des expressions contenant
le signe "=". Si vous avez des expressions sans ce signe du style
a+b+c faites a+b+c=
***********************
Sub ParamEquation()
Dim R As Range
Dim C As Range
Dim A$
Dim B$
Dim i&
Dim j&
Dim h&
Dim T()
Dim T2()
Dim cpt&
Dim bool As Boolean
If TypeName(Selection) <> "Range" Then Exit Sub
Set R = Selection
If R.Columns.Count > 1 Then Exit Sub
For Each C In R
A$ = ""
bool = False
cpt& = 0
Erase T
Erase T2
If Not IsEmpty(C) And InStr(1, C, "=") <> 0 Then
If Trim(C) <> "" Then
A$ = C & Space(1)
Do Until A$ = ""
h& = Asc(A$)
If h& >= 65 And h& <= 90 Or _
h& >= 97 And h& <= 122 Or _
h& = 224 Or _
h& >= 232 And h& <= 235 Then
B$ = B$ & Left(A$, 1)
Else
B$ = B$ & Space(1)
End If
A$ = Mid(A$, 2)
Loop
Do Until B$ = ""
If InStr(1, B$, Space(1)) > 0 Then
bool = True
A$ = Mid(B$, 1, InStr(1, B$, Space(1)) - 1)
B$ = LTrim(Mid(B$, Len(A$) + 1))
cpt& = cpt& + 1
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = A$
Else
B$ = ""
End If
Loop
If bool Then
cpt& = 0
For j& = UBound(T, 2) To 2 Step -1
For i& = j& - 1 To 1 Step -1
If T(1, j&) = T(1, i&) Then
T(1, j&) = ""
cpt& = cpt& + 1
Exit For
End If
Next i&
Next j&
ReDim T2(1 To 1, 1 To UBound(T, 2) - cpt&)
cpt& = 0
For j& = 1 To UBound(T, 2)
If T(1, j&) <> "" Then
cpt& = cpt& + 1
T2(1, cpt&) = T(1, j&)
End If
Next j&
Range(Cells(C.Row, 3), _
Cells(C.Row, 3 + UBound(T2, 2) - 1)) = T2
End If
End If
End If
Next C
End Sub
***********************
Cordialement.
PMO
Patrick Morange