Liste fonction

Fermé
I folima Elda Messages postés 24 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 10 juillet 2016 - 2 mai 2008 à 23:23
 amigo - 4 mai 2008 à 21:44
Bonjour,

Voilà, j'ai utilisé le code suivant afin de connaître les nom de fonction excel en anglais pour les insérer dans VBA
Sub formula()
Worksheets("fonction").Range("A1").formula = a
MsgBox (a)
End Sub


Bon ceci fonctionne (en tout cas il me donne un résultat ;)). Donc j'ai fait ça pour 3 fonctions particulière:
pente => .SLOPE (plage)
ordonné à l'origine => . INTERCEPT(plage)
coefficient de détermination => .RSQ(plage)
Sauf que lorsque je lance mon programme, il me dit ceci:
"Erreur de compilation. Argument non facultatif" et il me surligne mon SLOPE ect...
Donc je voulais savoir si vous pouviez m'aider à modifier mon code pour pouvoir calculer les résultats correspondant ou me donner une autre liste de traduction de code:
mon code:
Sub pente()
j = 4
    LDeb = j
    CDeb = 1
    LFin = (j + N - 1)
    CFin = 1
Set Range1 = Range(Cells(LDeb, CDeb + 1), Cells(LFin, CFin + 1))
Set Range2 = Range(Cells(LDeb, CDeb), Cells(LFin, CFin))
Set bigrange = Application.Union(Range("Range1"), Range("Range2"))
a = Application.WorksheetFunction.Slope(Range("bigrange"))
b = Application.WorksheetFunction.Intercept(Range("bigrange"))
r = Application.WorksheetFunction.RSq(Range("bigrange"))
MsgBox (a)
MsgBox (b)
MsgBox (r)
End Sub


Merci de votre aide
A voir également:

9 réponses

Bonjour,
Syntaxe : PENTE(y_connus,x_connus)
y_connus représente une matrice ou une plage de cellules de points de données dépendantes.
x_connus représente l'ensemble de points de données indépendantes.
je ne fais que recopier l'aide sans rien comprendre à cette fonction, sauf qu'elle admet 2 arguments obligatoires.
il faudrait quelquechose comme ça :
a = Application.WorksheetFunction.Slope(bigrange1,bigrange2)
A+
0
I folima Elda Messages postés 24 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 10 juillet 2016
3 mai 2008 à 10:28
Je le sais bien, c'est pour ça que j'ai mis une fonction union qui me permet de réunir les 2 plages. Enfin en cas de doute j'ai fait ceci
j = 4
    LDeb = j
    CDeb = 1
    LFin = (j + N - 1)
    CFin = 1
Set Range1 = Range(Cells(LDeb, CDeb + 1), Cells(LFin, CFin + 1))
Set Range2 = Range(Cells(LDeb, CDeb), Cells(LFin, CFin))
'Set bigrange = Application.Union(Range("Range1"), Range("Range2"))
a = Application.WorksheetFunction.Slope(Range("Range1", "Range2"))
b = Application.WorksheetFunction.Intercept(Range("Range1", "Range2"))
r = Application.WorksheetFunction.RSq(Range("Range1", "Range2"))
MsgBox (a)
MsgBox (b)
MsgBox (r)


Mais là toujouirs le même problème
0
Bonjour,

Je pense que la syntaxe est plutôt celle-ci:

a = Application.WorksheetFunction.Slope(Range1 , Range2)
b = Application.WorksheetFunction.Intercept(Range1 , Range2)
r = Application.WorksheetFunction.RSq(Range1 , Range2)


A+.
0
I folima Elda Messages postés 24 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 10 juillet 2016
3 mai 2008 à 18:53
Amigo, ton truc est pas mal déjà car maintenant il me dit:
"Impossible de lire la propriété Sope de la classe WorksheetFunction"
Il y a déjà de l'amélioration ^^
Je vais finir pas désespèrer car pour mon programme il ne me reste que ça à faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ces sont tes objets Range qui ne sont pas bien définis

Exemple d'utilisation

B6=5 ; C6=7
B7=9 ; C7=3

Private Sub CommandButton1_Click()
Dim myRange1 As Range, myRange2 As Range
Dim answer As Double
'Set myRange1 = Worksheets("feuil1").Range("B6:B7")
'Set myRange2 = Worksheets("feuil1").Range("C6:C7")
'Set myRange1 = Range("B6:B7")
'Set myRange2 = Range("C6:C7")
Set myRange1 = Range(Cells(6, 2), Cells(7, 2))
Set myRange2 = Range(Cells(6, 3), Cells(7, 3))
answer = Application.WorksheetFunction.Slope(myRange1, myRange2)
MsgBox answer
End Sub

Toutes les syntaxes sont correctes

le resultat ets -1

A+.
0
I folima Elda Messages postés 24 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 10 juillet 2016
3 mai 2008 à 20:28
Moi e que je voudrais au tru c'est mettre une variable. Car dans mon programme, je ne connais que la ligne de départ. La taille du tableau après m'est indéterminé. 'est pour cette raison qu'au début il y a j et N (ref mon premier post).
On peut faire une variable avec ton procédé amigo???
0
Oui, on peut mettre des variables.

Ce que je voulais dire, c'est que les plages (range) passées à la fonction doivent pointer sur des valeurs valides.
Essaie de mettre la formule dans une cellule de ton tableau, avec les plages définies dans ta macro, s'il y a une erreur c'est que ces plages ne sont pas valides pour la fonction Slope.

Pour vérifier:
En A1 met =Pente("... : ...", "... : ...") (les petits points sont les plages que tu voudrais passer à la fonction)
et observe le resultat.

A+.
0
I folima Elda
4 mai 2008 à 21:03
Amigo, je viens de testé ce code. Donc j'ai repris ton idée d'utiliser les cellules qui était bonne. Sauf que j'ai toujours la même erreur à propos du Slope. J'i repris à fond ton code et je l'ai légèrement modifié.
Sub pente()
Dim myRange1 As Range, myRange2 As Range
Dim answer As Double
'Set myRange1 = Worksheets("feuil1").Range("B6:B7")
'Set myRange2 = Worksheets("feuil1").Range("C6:C7")
'Set myRange1 = Range("B6:B7")
'Set myRange2 = Range("C6:C7")
j = 4
fin = N + j - 1
Set myRange1 = Range(Cells(j, 2), Cells(fin, 2))
Set myRange2 = Range(Cells(j, 1), Cells(fin, 1))
answer = Application.WorksheetFunction.Slope(myRange1, myRange2)
MsgBox answer
End Sub


J'ai supposé que tes truc qui y avait après les apostrophe ne son pas pris en compte et qu'il était juste là pour t'aider. J'ai essyé ton code de départ, il fonctionne. Mais là je vois plus omment faire T_T
0
Bonjour,

Est ce que je peux voir ton tableau, si ce n'est pas trop indiscret. Enleve les informations personnelles et met ton fichier sur http://www.cijoint.fr/

Tu peux juste copier la feuille dans un fichier vierge, ça suffira.

N'oublie pas le recopier le lien qui t'est donné et poste le ici. Sans avoir le tableau sous les yeux je ne pourrais pas t'en dire plus.

A+.
0