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

fomule avec des variables en VBA ?

4 réponses
Avatar
jean
Bonjour,
J'ai réalisé une simulation en excel 2007 qui implique une formule tel que
=croissance(b50:b60,a50:a60,a50). En mettant l'écart 50 à 60 en variable je
réalise cette fonction en utilisant les "indirect"... mais sur une base de
données de plus de 5000 lignes et de nombreuses autres fonctions, c'est lourd
et lent.
J'essaye donc de faire la même chose avec une macro vba en utilisant :

Range("L50").Select
ActiveCell.Formula = "=growth(B50:b60,a50:a60,a51)"
Range("L50:L58").Select
Selection.FillDown

qui marche bien mais comment mettre b50, b60,a50,a60 en variable ?
J'ai essayé des "dim" mais sans succès ?
Merci de m'aider, c'est sympa de votre part.




--
merci ... bises à +

4 réponses

Avatar
Philippe.R
Bonsoir,
supposant la valeur souhaitée des variables en A1 et en A2 :

Sub varfor()
Dim mAa As String, maB As String
mAa = [a1]
maB = [a2]
ActiveCell.Formula = "=growth(" & maB & "," & mAa & ",a51)"
End Sub
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"jean" a écrit dans le message de
news:
Bonjour,
J'ai réalisé une simulation en excel 2007 qui implique une formule tel que
=croissance(b50:b60,a50:a60,a50). En mettant l'écart 50 à 60 en variable
je
réalise cette fonction en utilisant les "indirect"... mais sur une base
de
données de plus de 5000 lignes et de nombreuses autres fonctions, c'est
lourd
et lent.
J'essaye donc de faire la même chose avec une macro vba en utilisant :

Range("L50").Select
ActiveCell.Formula = "=growth(B50:b60,a50:a60,a51)"
Range("L50:L58").Select
Selection.FillDown

qui marche bien mais comment mettre b50, b60,a50,a60 en variable ?
J'ai essayé des "dim" mais sans succès ?
Merci de m'aider, c'est sympa de votre part.




--
merci ... bises à +


Avatar
MichDenis
Bonjour Jean,

Il y a ceci :

'-------------------------------------
Sub test()
Dim Sh As Worksheet
'Variable représentant la feuille où sont tes formules
Set Sh = Worksheets("Feuil1") 'Nom de la feuille
With Sh
With .Range("L50")
'les cellules ayant des .Address(0,0) représente
'des adresses relatives... sans les (0,0), tu auras
'des adresse absolues ...
.Formula = "=growth(" & Sh.Range("B50").Address(0, 0) & _
":" & Sh.Range("b60").Address(0, 0) & "," & _
Sh.Range("a50").Address(0, 0) & ":" & _
Sh.Range("a60").Address(0, 0) & "," _
& Sh.Range("a51").Address & ")"
'Le 8 représente le nombre de cellules vers
'le bas où tu veux copier les formules
.Resize(8).FillDown
End With
End With

End Sub
'-------------------------------------



"jean" a écrit dans le message de groupe de discussion :

Bonjour,
J'ai réalisé une simulation en excel 2007 qui implique une formule tel que
=croissance(b50:b60,a50:a60,a50). En mettant l'écart 50 à 60 en variable je
réalise cette fonction en utilisant les "indirect"... mais sur une base de
données de plus de 5000 lignes et de nombreuses autres fonctions, c'est lourd
et lent.
J'essaye donc de faire la même chose avec une macro vba en utilisant :

Range("L50").Select
ActiveCell.Formula = "=growth(B50:b60,a50:a60,a51)"
Range("L50:L58").Select
Selection.FillDown

qui marche bien mais comment mettre b50, b60,a50,a60 en variable ?
J'ai essayé des "dim" mais sans succès ?
Merci de m'aider, c'est sympa de votre part.




--
merci ... bises à +
Avatar
jean
wouaaahhhh et même que ça marche !
(je ne sais comment, mais ça marche!!!!)
merci merci....

--
merci ... bises à +


"Philippe.R" a écrit :

Bonsoir,
supposant la valeur souhaitée des variables en A1 et en A2 :

Sub varfor()
Dim mAa As String, maB As String
mAa = [a1]
maB = [a2]
ActiveCell.Formula = "=growth(" & maB & "," & mAa & ",a51)"
End Sub
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"jean" a écrit dans le message de
news:
> Bonjour,
> J'ai réalisé une simulation en excel 2007 qui implique une formule tel que
> =croissance(b50:b60,a50:a60,a50). En mettant l'écart 50 à 60 en variable
> je
> réalise cette fonction en utilisant les "indirect"... mais sur une base
> de
> données de plus de 5000 lignes et de nombreuses autres fonctions, c'est
> lourd
> et lent.
> J'essaye donc de faire la même chose avec une macro vba en utilisant :
>
> Range("L50").Select
> ActiveCell.Formula = "=growth(B50:b60,a50:a60,a51)"
> Range("L50:L58").Select
> Selection.FillDown
>
> qui marche bien mais comment mettre b50, b60,a50,a60 en variable ?
> J'ai essayé des "dim" mais sans succès ?
> Merci de m'aider, c'est sympa de votre part.
>
>
>
>
> --
> merci ... bises à +




Avatar
jean
... je n'ai pas essayé ta solution car celle de Phillipe a marché du premier
coup, mais merci tout de même.
--
merci ... bises à +


"MichDenis" a écrit :

Bonjour Jean,

Il y a ceci :

'-------------------------------------
Sub test()
Dim Sh As Worksheet
'Variable représentant la feuille où sont tes formules
Set Sh = Worksheets("Feuil1") 'Nom de la feuille
With Sh
With .Range("L50")
'les cellules ayant des .Address(0,0) représente
'des adresses relatives... sans les (0,0), tu auras
'des adresse absolues ...
.Formula = "=growth(" & Sh.Range("B50").Address(0, 0) & _
":" & Sh.Range("b60").Address(0, 0) & "," & _
Sh.Range("a50").Address(0, 0) & ":" & _
Sh.Range("a60").Address(0, 0) & "," _
& Sh.Range("a51").Address & ")"
'Le 8 représente le nombre de cellules vers
'le bas où tu veux copier les formules
.Resize(8).FillDown
End With
End With

End Sub
'-------------------------------------



"jean" a écrit dans le message de groupe de discussion :

Bonjour,
J'ai réalisé une simulation en excel 2007 qui implique une formule tel que
=croissance(b50:b60,a50:a60,a50). En mettant l'écart 50 à 60 en variable je
réalise cette fonction en utilisant les "indirect"... mais sur une base de
données de plus de 5000 lignes et de nombreuses autres fonctions, c'est lourd
et lent.
J'essaye donc de faire la même chose avec une macro vba en utilisant :

Range("L50").Select
ActiveCell.Formula = "=growth(B50:b60,a50:a60,a51)"
Range("L50:L58").Select
Selection.FillDown

qui marche bien mais comment mettre b50, b60,a50,a60 en variable ?
J'ai essayé des "dim" mais sans succès ?
Merci de m'aider, c'est sympa de votre part.




--
merci ... bises à +