VBA : Débutant demande correction formule logarythmique

FredCr

XLDnaute Nouveau
Bonjour,

C'est ma première macro Excel. Je souhaite effectuer une formule (DROITEREG(plageY;LN(plageX)) et ORDONNEE.ORIGINE(plageY;LN(plageX) pour aboutir à l'équation de la courbe de tendance logarytmique y=aln(x)+b).
Voici ce que me donne l'enregistreur de macro :

Range("C4").Select
ActiveCell.FormulaR1C1 = "=LINEST(R[-1]C[-1]:R[2952]C[-1],LN(R[-1]C[-2]:R[2952]C[-2]))"
Range("C6").Select
ActiveCell.FormulaR1C1 = _
"=INTERCEPT(R[-3]C[-1]:R[2952]C[-1],LN(R[-3]C[-2]:R[2952]C[-2]))"

Or je souhaite que le calcul de la formule se fasse avec un nombre variable de ligne.
Pourriez-vous me donner une correction car je nage un peu. Merci :)
 

mécano41

XLDnaute Accro
Re : VBA : Débutant demande correction formule logarythmique

Bonjour,

Essaie ceci:

Code:
Option Explicit

Sub essai()
Dim LimSup As Long
Dim Lim As Long
LimSup = 2956 ' à changer directement ou par programme
Range("C4").Select
Lim = LimSup - ActiveCell.Row
ActiveCell.FormulaR1C1 = "=LINEST(R[-1]C[-1]:R[" & Lim & "]C[-1],LN(R[-1]C[-2]:R[" & Lim & "]C[-2]))"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=INTERCEPT(R[-3]C[-1]:R[" & Lim & "]C[-1],LN(R[-3]C[-2]:R[" & Lim & "]C[-2]))"
End Sub

On pourrait évidemment calculer automatiquement le nombre de lignes...

Cordialement
 

FredCr

XLDnaute Nouveau
Re : VBA : Débutant demande correction formule logarythmique

Merci pour votre réponse rapide mais cela ne marche toujours pas.
J'ai remplacé mon bout de code par le votre.
Quand je lance ma macro avec un nombre différent de ligne, j'ai toujours VALEURS! dans ma cellule de calcul.
Bon point, le code fonctionne pour le fichier de base lorsque je met 2956 en LimSup. Il doit manquer un petit quelquechose car lorsque je met + de 2956 en LimSup ça ne fonctionne plus.
 

mécano41

XLDnaute Accro
Re : VBA : Débutant demande correction formule logarythmique

Il faudrait que tu mettes un petit fichier avec les dispositions exactes des lignes (une dizaine de lignes suffiront) et colonnes (enlève les données confidentielles s'il y en a) et les deux formules correspondantes sur la feuille de calculs.

Il faut dire également ce qui peut changer (ligne, colonne de début des données, de fin des données...)

Laisse dedans ce que tu as fait en macro. On verra ensuite

Cordialement
 

FredCr

XLDnaute Nouveau
Re : VBA : Débutant demande correction formule logarythmique

Bonjour,

Le fichier complet est malheureusement confidentiel et surtout très lourd (25mo).
Néanmoins j'ai reproduit un fichier Excel avec la partie qui m'intéresse et la disposition du fichier sur lequel je travail.
La seule chose qui peut changer c'est la longueur des colonnes secrettruc secret1truc1 et secret2truc2 (maximum 32000). Les courbes de tendance logarythmique ne sont pas à discuter sur mon fichier réel.
Voilà.

Merci et bon weekend de Pâques.
 

Pièces jointes

  • EssaiLogarythmeFredCr.xlsm
    17.3 KB · Affichages: 32
  • EssaiLogarythmeFredCr.xlsm
    17.3 KB · Affichages: 42
  • EssaiLogarythmeFredCr.xlsm
    17.3 KB · Affichages: 45

pierrejean

XLDnaute Barbatruc
Re : VBA : Débutant demande correction formule logarythmique

Bonjour FredCr

Salut mecano

Un essai
Code:
Sub test()
x = Range("A" & Rows.Count).End(xlUp).Row
Range("C4").FormulaLocal = "=DROITEREG(B3:B" & x & ";LN(A3:A" & x & "))"
Range("C6").FormulaLocal = "=ORDONNEE.ORIGINE(B3:B" & x & ";LN(A3:A" & x & "))"
x = Range("D" & Rows.Count).End(xlUp).Row
Range("F4").FormulaLocal = "=DROITEREG(E3:E" & x & ";LN(D3:D" & x & "))"
Range("F6").FormulaLocal = "=ORDONNEE.ORIGINE(E3:E" & x & ";LN(D3:D" & x & "))"
x = Range("G" & Rows.Count).End(xlUp).Row
Range("I4").FormulaLocal = "=DROITEREG(H3:H" & x & ";LN(G3:G" & x & "))"
Range("I6").FormulaLocal = "=ORDONNEE.ORIGINE(H3:H" & x & ";LN(G3:G" & x & "))"


End Sub
 

Pièces jointes

  • EssaiLogarythmeFredCr.xlsm
    19.8 KB · Affichages: 43
  • EssaiLogarythmeFredCr.xlsm
    19.8 KB · Affichages: 51
  • EssaiLogarythmeFredCr.xlsm
    19.8 KB · Affichages: 44

mécano41

XLDnaute Accro
Re : VBA : Débutant demande correction formule logarythmique

Bonjour à tous,

Voici une version en nommant les plages (voir nota sur feuille) pour faciliter les changements...

Cordialement
 

Pièces jointes

  • EssaiLogarithmeFredCr2.xlsm
    21.6 KB · Affichages: 32
Dernière édition:

FredCr

XLDnaute Nouveau
Re : VBA : Débutant demande correction formule logarythmique

Merci Beaucoup PierreJean, ça fonctionne parfaitement. Ça m'enlève une sacré épine du pied.
Merci à toi aussi Mecano41, j'ai regardé ta solution (pas testé), elle a l'air intéressante et il y a de fortes chances que je l'utilise par la suite.

Ça fait avancer mon sujet de BTS MCI à grand pas, et découvrir une communauté Excel passionnante.
@+
 

mécano41

XLDnaute Accro
Re : VBA : Débutant demande correction formule logarythmique

Bonjour,

Tu vas dans le fichier de Pierre-Jean :

- tu mets le curseur en C4
- tu cliques le bouton "Développeur" de la barre d'outils
- tu fais "Enregistrer une macro" puis "OK"
- tu mets le curseur dans la barre de formule
- tu fais "Entrée"
- tu cliques le bouton "Développeur" de la barre d'outils
- tu fais "Arrêter l'enregistrement"

Si tu vas dans le VBE, tu verras que l'enregistreur de macros a créé un nouveau module dans lequel ton opération a été enregistrée sous la forme :

Code:
ActiveCell.FormulaR1C1 = "=LINEST(R[-1]C[-1]:R[15]C[-1],LN(R[-1]C[-2]:R[15]C[-2]))"

C'est la traduction en anglais de la formule de la cellule C4, avec utilisation du mode RC de désignation des cellules (R=Row ; C = Column et le nombre entre crochet est le décalage par rapport à la cellule active. positif = vers la droite ou le bas et négatif vers la gauche ou le haut)

Cordialement
 

Discussions similaires

Réponses
2
Affichages
413

Statistiques des forums

Discussions
312 503
Messages
2 089 053
Membres
104 013
dernier inscrit
VELONDAHY Mickaël