Stockage valeur

Résolu
Bonjour le forum !

Je souhaite afficher un UserForm si la moyenne de "FeuilleCalc"!(D2:D50) est inférieure à 3 ou supérieure à 10. Entre 3 et 10, ne rien faire.

J'ai essayé de stocker ma valeur moyenne dans une variable nommée "M"

Sub Test()  'Vérifie moyenne
With Sheets("FeuilleCalc")
Dim M As Long
M = Application.Average(Range(Cells(2, 4), Cells(50, 4)))
If .M.Value < 3 Then UF1.Show '***
If .M.Value > 10 Then UF1.Show
End With
End Sub


Au niveau de *** j'obtiens une erreur 438, sans comprendre pourquoi.
Un fichier exemple : https://www.cjoint.com/c/FCtiwBHtqXk

Puis-je vous demander de l'aide ?

Merci par avance !

4 réponses

  1. Contributeur
    Bonjour,

    pourquoi .M.Value et non M.Value ?
    De plus avec Dim M As Long tu vas arrondir ta moyenne à l'entier, tu afficheras ton UF à tort dans certains cas.
    eric

    En essayant continuellement, on finit par réussir. 
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    1. Bonjour Eric

      Merci de ta réponse

      J'ai remplacé le Long par Single pour tenir compte des virgules et ne plus faire de moyenne.
      J'ai supprimé le point avant M.
      J'obtiens à présent une erreur "Qualificateur incorrect" sur la définition du M=

      Sub Test()  'Vérifie moyenne
      With Sheets("FeuilleCalc")
      Dim M As Single
      M = Application.Average(Range(Cells(2, 4), Cells(50, 4)))
      If M.Value < 3 Then UF1.Show '***
      If M.Value > 10 Then UF1.Show
      End With
      End Sub


      Merci à plus !
      1. Eric, toujours là ? :)
        1. Contributeur
          Non, pas toujours là, j'ai une vie à coté.
          Le . m'avait sauté au yeux mais le .value n'a rien à faire sur une variable non plus.
          eric
      2. Exact, sans le Value la fonction fait ce pour quoi elle a été conçue.
        Erreur de syntaxe, donc.

        Merci pour ton aide et bon week-end !