Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraction de l'équation du label d'un graphique

11 réponses
Avatar
fetnat
Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer cette
erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub

10 réponses

1 2
Avatar
Francois L

Bonsoir,

Chez moi, la macro fonctionne...

--
François L


Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer cette
erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub


Avatar
fetnat
Bonsoir,

Merci pour le retour.

Mon équation est une droite y = -0,348x + 538,3

Hormis que le label est de couleur rose, je ne vois pas !!! :)

Je vais creuser la question

Bonne soirée

fetnat


Bonsoir,

Chez moi, la macro fonctionne...



Avatar
Frédéric Sigonneau
L'erreur 13 indique une erreur d'incompatibilité de type de données.
Il est possible qu'il s'agisse d'un problème de séparateur décimal. La fonction
Val ne reconnait que le point comme séparateur décimal. Tom Ogilvy utilise
probablement le point également. Par contre tu utilises peut-être la virgule.
Si c'est le cas, essaye de remplacer la ligne fautive par

rng(j).Value = cdbl(varr(i))

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer cette
erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub


Avatar
Francois L

Bonjour,

Regardes donc si cette autre formule du même Tom fonctionne

Sub GetFormulab()
Dim cht As Chart
Dim ser As Series
Dim tline As Trendline
Dim sFormula As String

Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the formula
MsgBox "Formula is: " & sFormula

End If
End If
Next

End Sub

Sinon, pour essayer de comprendre le problème, tu pourrrais ...

mettre en remarque la ligne
rng(j).Value = Val(varr(i))

et rajouter à la place un
Debug.Print i; varr(i)

ça devrait te permettre de comprendre ce qui coince.


--
François L


Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer cette
erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub


Avatar
fetnat
Bonjour Frédéric,

Bien vu, dans sFormula je me retrouve avec "-0,348x,538,3"
Le séparateur de champ est identique au séparateur decimal.

Du coup, varr(i) contient "-0" alors qu'il devrait contenir "0,348x"

Pour convertir mes virgules décimale en point, j'ai ajouté
sFormula = Application.Substitute(sFormula, ",", ".")
Et pour virer le x qui donnera une chaine, alors que je veux le coef
sFormula = Application.Substitute(sFormula, "x ", " ")


Toutefois CDbl(varr(i)) permettait de voir le contenu, mais c'est alors
rng(j).Value qui provoquait l'incompatibilité 13.
Au même endroit, val(varr(i)) ne permet pas de voir le contenu.

Alors un petit tour dans l'aide et j'ai mis :
rng(j) = CVar(varr(i))
et ça marche...:)

Mille et un mercis pour l'aide, je n'aurais jamais trouvé !

Voici la version "virgule" qui tourne sur ma machine :

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Long
Dim ser As Series, sChar As String
Dim tline As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, "y = ", "")
sFormula = Application.Substitute(sFormula, "x ", " ")
sFormula = Application.Substitute(sFormula, ",", ".")
sFormula = Application.Substitute(sFormula, " + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
'Debug.Print i; varr(i)
rng(j) = CVar(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub

Bonne journée

fetnat

L'erreur 13 indique une erreur d'incompatibilité de type de données.
Il est possible qu'il s'agisse d'un problème de séparateur décimal. La
fonction Val ne reconnait que le point comme séparateur décimal. Tom
Ogilvy utilise probablement le point également. Par contre tu utilises
peut-être la virgule.
Si c'est le cas, essaye de remplacer la ligne fautive par

rng(j).Value = cdbl(varr(i))

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer
cette erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub




Avatar
fetnat
Bonjour François,

Grâce à l'astuce du debug.print, j'ai vu les valeurs. Je ne pense jamais
à ce truc. Il faut dire que je ne pratique pas les tableaux.
La version qui me convient est dans la réponse à Frédéric Sigonneau.
Grâce à vous deux, c'est résolu.

La Sub GetFormulab() est bien mais l'essentiel c'est de sortir les
coefs. Et ce point n'est pas traité, je souhaitais avoir une version
plus élégante que ma version "bourin".

Les mille et un mercis sont à partager avec Frédéric... :) Drôle d'idée
de mettre un nombre paire...

Bonne journée

fetnat


Bonjour,

Regardes donc si cette autre formule du même Tom fonctionne

Sub GetFormulab()
Dim cht As Chart
Dim ser As Series
Dim tline As Trendline
Dim sFormula As String

Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the formula
MsgBox "Formula is: " & sFormula

End If
End If
Next

End Sub

Sinon, pour essayer de comprendre le problème, tu pourrrais ...

mettre en remarque la ligne
rng(j).Value = Val(varr(i))

et rajouter à la place un
Debug.Print i; varr(i)

ça devrait te permettre de comprendre ce qui coince.




Avatar
Francois L
Bonjour François,

Grâce à l'astuce du debug.print, j'ai vu les valeurs. Je ne pense jamais
à ce truc. Il faut dire que je ne pratique pas les tableaux.



Bonsoir,

Quand ça commence à merdoyer, le Debug.Print c'est vraiment le premier
truc pour essayer de comprendre !

--
François L



La version qui me convient est dans la réponse à Frédéric Sigonneau.
Grâce à vous deux, c'est résolu.

La Sub GetFormulab() est bien mais l'essentiel c'est de sortir les
coefs. Et ce point n'est pas traité, je souhaitais avoir une version
plus élégante que ma version "bourin".

Les mille et un mercis sont à partager avec Frédéric... :) Drôle d'idée
de mettre un nombre paire...

Bonne journée

fetnat


Bonjour,

Regardes donc si cette autre formule du même Tom fonctionne

Sub GetFormulab()
Dim cht As Chart
Dim ser As Series
Dim tline As Trendline
Dim sFormula As String

Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the formula
MsgBox "Formula is: " & sFormula

End If
End If
Next

End Sub

Sinon, pour essayer de comprendre le problème, tu pourrrais ...

mettre en remarque la ligne
rng(j).Value = Val(varr(i))

et rajouter à la place un
Debug.Print i; varr(i)

ça devrait te permettre de comprendre ce qui coince.






Avatar
Francois L
Bonjour François,

Grâce à l'astuce du debug.print, j'ai vu les valeurs. Je ne pense jamais
à ce truc. Il faut dire que je ne pratique pas les tableaux.



Bonsoir,

Quand ça commence à merdoyer, le Debug.Print c'est vraiment le premier
truc pour essayer de comprendre !



La version qui me convient est dans la réponse à Frédéric Sigonneau.
Grâce à vous deux, c'est résolu.

La Sub GetFormulab() est bien mais l'essentiel c'est de sortir les
coefs. Et ce point n'est pas traité, je souhaitais avoir une version
plus élégante que ma version "bourin".

Les mille et un mercis sont à partager avec Frédéric... :) Drôle d'idée
de mettre un nombre paire...

Bonne journée

fetnat


Bonjour,

Regardes donc si cette autre formule du même Tom fonctionne

Sub GetFormulab()
Dim cht As Chart
Dim ser As Series
Dim tline As Trendline
Dim sFormula As String

Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the formula
MsgBox "Formula is: " & sFormula

End If
End If
Next

End Sub

Sinon, pour essayer de comprendre le problème, tu pourrrais ...

mettre en remarque la ligne
rng(j).Value = Val(varr(i))

et rajouter à la place un
Debug.Print i; varr(i)

ça devrait te permettre de comprendre ce qui coince.






Avatar
fetnat
:) je vais le graver dans le marbre !

Bonne soirée et encore merci

fetnat

Bonjour François,

Grâce à l'astuce du debug.print, j'ai vu les valeurs. Je ne pense
jamais à ce truc. Il faut dire que je ne pratique pas les tableaux.



Bonsoir,

Quand ça commence à merdoyer, le Debug.Print c'est vraiment le premier
truc pour essayer de comprendre !



La version qui me convient est dans la réponse à Frédéric Sigonneau.
Grâce à vous deux, c'est résolu.

La Sub GetFormulab() est bien mais l'essentiel c'est de sortir les
coefs. Et ce point n'est pas traité, je souhaitais avoir une version
plus élégante que ma version "bourin".

Les mille et un mercis sont à partager avec Frédéric... :) Drôle
d'idée de mettre un nombre paire...

Bonne journée

fetnat


Bonjour,

Regardes donc si cette autre formule du même Tom fonctionne

Sub GetFormulab()
Dim cht As Chart
Dim ser As Series
Dim tline As Trendline
Dim sFormula As String

Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the formula
MsgBox "Formula is: " & sFormula

End If
End If
Next

End Sub

Sinon, pour essayer de comprendre le problème, tu pourrrais ...

mettre en remarque la ligne
rng(j).Value = Val(varr(i))

et rajouter à la place un
Debug.Print i; varr(i)

ça devrait te permettre de comprendre ce qui coince.








Avatar
fetnat
La première version ne traitait pas les coef négatifs, ni les degrés
supérieur.

Voici une version jusqu'au degré 6.

Sub GetFormula()
' d'après "Tom Ogilvy", modifié pour utiliser le séparateur décimal
"virgule"
' extrait les coef d'une équation jusqu'au degré 6 (à partir du label
du graphique)
' le coeficient supérieur est en N6 (coef du degré inférieur en
dessous etc.) et degré en O6
' ATTN : le range ("N6:O12") est utilisé pour une équation de degré 6
Dim sStr As String, sStr1 As String, sStr2 As String
Dim sFormula As String, j As Long
Dim i As Long
Dim ser As Series, sChar As String
Dim tline As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 7, 1 To 2)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tline = ser.Trendlines(1)
If tline.DisplayEquation Then
sFormula = tline.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, "y = ", "")
sFormula = Application.Substitute(sFormula, ",", ".")
sFormula = Application.Substitute(sFormula, " + ", ",")
sFormula = Application.Substitute(sFormula, " - ", ",-")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula) + 1
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) + 1 Then
If i = Len(sFormula) + 1 Then
sStr1 = sStr1 & sChar
End If
varr(j, 1) = sStr1
varr(j, 2) = sStr2
'Debug.Print j; varr(j, 1); varr(j, 2)
sStr1 = ""
sStr2 = ""
j = j + 1
Else
If sChar <> "x" Then
sStr1 = sStr1 & sChar
Else
If Mid(sFormula, i + 1, 1) <> "," Then
sStr2 = sStr2 & sChar & Mid(sFormula, i
+ 1, 1)
i = i + 1
Else
sStr2 = sStr2 & sChar
End If
End If
End If
Next
'Debug.Print j; varr(j - 1, 1); varr(j - 1, 2)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
'Debug.Print i; varr(i, 1); varr(i, 2)
rng(j, 1) = CVar(varr(i, 1))
rng(j, 2) = CVar(varr(i, 2))
'Debug.Print j; rng(j, 1); rng(j, 2)
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub



Bonsoir,

Par un beau dimanche de difficultés... je sollicite votre aide pour
supprimer une erreur 13 dans cette macro de Tom Ogilvy.

La sub() extrait les équations inscritent dans les labels d'un graphique.
Je ne maitrise pas les tableaux, si une pointure pouvait supprimer cette
erreur, j'en serais moult reconnaissant.

C'est à la fin sur cette ligne :
rng(j).Value = val(varr(i))

Merci pour l'aide

fetnat

Sub GetFormula()
'"Tom Ogilvy"
Dim sStr As String, sStr1 As String
Dim sFormula As String, j As Long
Dim i As Lon
Dim ser As Series, sChar As String
Dim tLine As Trendline
Dim cht As Chart
Dim rng As Range
Dim varr()
ReDim varr(1 To 10)
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each ser In cht.SeriesCollection
If ser.Trendlines.Count = 1 Then
Set tLine = ser.Trendlines(1)
If tLine.DisplayEquation Then
sFormula = tLine.DataLabel.Text '<== this gets the
formula
sFormula = Application.Substitute(sFormula, _
"y = ", "")
sFormula = Application.Substitute(sFormula, _
" + ", ",")
'Debug.Print sFormula
j = 1
For i = 1 To Len(sFormula)
sChar = Mid(sFormula, i, 1)
If sChar = "," Or i = Len(sFormula) Then
If i = Len(sFormula) Then
sStr1 = sStr1 & sChar
End If
varr(j) = sStr1
sStr1 = ""
j = j + 1
Else
sStr1 = sStr1 & sChar
End If
Next
ReDim Preserve varr(1 To j - 1)
Set rng = Range("N6")
j = 1
For i = LBound(varr) To UBound(varr)
rng(j).Value = val(varr(i))
j = j + 1
Next i
Exit Sub
End If
End If
Next
End Sub


1 2