Appliquer une formule à une selection

Bonjour à tous,

suite à de longues heures de recherche, je me tourne vers vous. Pour l'instant ma formule me permet de selectionner la colonne de mon tableau que je souhaite en rentrant le nom de cette dernière dans la cellule L2. Ce que je veux, c'est appliquer une formule écart-type à la colonne selectionner mais je n'arrive pas à comprendre comment déclarer une variable à partir de laquelle je pourrais reprendre "Sheets("BD").Range(Cells(6, col), Cells(500, col).End(xlDown)).Select". Pour finir je veux que le résultat de cette formule se place dans la cellule N2.

Module 7

Sub colonne_choix2()

Dim colonne As String

Dim col As Long

colonne = Range("L2").Value

col = Application.Match(colonne, Sheets("BD").Range("A5:GJ5"), 0)

Sheets("BD").Range(Cells(6, col), Cells(500, col).End(xlDown)).Select

' appliquer un écart-type à cette selection, dans la cellule N2'

End Sub

Bonjour,

On n'a jamais besoin de sélectionner. Et sélectionner ralentit toujours...

Tu déclares une variable Range, par ex. Dim plg As Range

   Set plg = Sheets("BD").Range(Cells(6, col), Cells(500, col).End(xlDown))

Et tu poursuis ton calcul avec plg...

Cordialement.

Merci pour ta réponse,

J'ai essayé de modifier mon code en prenant en compte ta remarque mais je bloque de la même façon que précédemment. Voici le code.

Sub colonne_choix2()

Dim colonne As String

Dim col As Long

Dim plg As Range

colonne = Range("L2").Value

col = Application.Match(colonne, Sheets("BD").Range("A5:GJ5"), 0)

Set plg = Sheets("BD").Range(Cells(6, col), Cells(500, col).End(xlDown))

formule = "=Stdve(plg)"

Range("N2").Formula = formule

End Sub

Bonjour,

Pour le principe…

Cdlt.

Sub XXX()
Dim rng As Range, valeur As String, lCol As Long, lRow As Long
    valeur = Cells(2, 12).Value
    On Error Resume Next
    lCol = Application.Match(valeur, Sheets("BD").Range("A5:GJ5"), 0)
    If Err.Number = 0 Then
        With Worksheets("BD")
            lRow = .Cells(.Rows.Count, lCol).End(xlUp).Row
            Set rng = .Cells(6, lCol).Resize(lRow - 5)
        End With
        Cells(2, 14).Value = WorksheetFunction.StDev(rng)
    End If
End Sub

Re,

Ce serait mieux :

formule = "=Stdve(" & plg & ")"

edit: Salut Jean-Eric

@MFerrand

screen

aïe ! inversion de 2 lettres ! j'crois bien qu'c'est plutôt Stdev( pour Standard deviation = écart-type

(j'te laisse vérifier )

dhany

Ca fonctionne merci beaucoup !

merci d'avoir passé le sujet en résolu, et bonne continuation !

dhany

@MFerrand

Screen.jpg

aïe ! inversion de 2 lettres ! j'crois bien qu'c'est plutôt Stdev( pour Standard deviation = écart-type

(j'te laisse vérifier )

dhany

Je ne veux pas plus vous déranger, mais au passage quelqu'un pourrait m'expliquer pourquoi utilise t'on cette syntaxe ? les deux & entourant la variable?

Laurent aura vérifié le nom de la fonction... sinon erreur #NOM! dans la cellule...

@Laurent

Tu a écrit :

pourquoi utilise t'on cette syntaxe ? les deux & entourant la variable?

Imagine si c'était un nombre constant, par exemple 5 ; l'instruction serait alors : formule = "=Stdev(5)" ; mais comme c'est une variable, on la « sort » du texte entre guillemets afin qu'elle puisse être évaluée par VBA, et on utilise & à gauche et à droite pour concaténer la valeur qui a été évaluée avec le texte initial ; concaténer = juxtaposer des éléments pour les réunir, notamment du texte : au lieu d'écrire abc = "Bon" + "jour" on écrit : abc = "Bon" & "jour" ➯ la variable abc (déclarée avant comme chaîne de caractères String) contient "Bonjour".

dhany

Re bonjour à tous,

Je m'excuse de revenir vers vous, j'ai fais une terrible erreur, je ne souhaite pas l'écart type de données mais l'écart-type de ratios.

J'ai modifié le document pour que vous visualisiez, je souhaite donc avant de calculer l'écart-type que toutes les données des colonnes correspondant à la valeur de N2 soient divisées par celle des colonnes correspondant à la valeur de L2, en gros calculer l'écart-type des valeurs de N2/L2 .

exemple: semaines vente confiseries

ciné 1: y 1 x1 = x1/y1

ciné 2: y2 x2 = x2/y2

ciné 3: y3 x3 = x3/y3

écart-type(x1/y1; x2/y2; x3/y3)

Seule différence pour L2, les champs étant moins nombreux, j'y ai inscrit une liste déroulante, ce qui en soit ne change rien à la démarche. Pour le reste c'est le même principe que précédemment. Je vous pris de m'excuser pour mon erreur.... .

Cordialement.

help ?

Rechercher des sujets similaires à "appliquer formule selection"