IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

calculer une moyenne avec 4 Chiffres


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Points : 5
    Points
    5
    Par défaut calculer une moyenne avec 4 Chiffres
    Bonjour a tous

    Je coince dans une formule j'arrive à la mettre dans une cellule d'excel mais pas en code VBA.

    En effet mon programme dispose d'une comboBox et de 8 TextBox dans le même Userform. Mon code que j'aimerai trouve est pour le cas suivant :

    je saisie 4 Chiffre dans 4 TextBox différentes ( TextBox2, TextBox3, TextBox4 et TextBox5) et j'aimerai faire la moyenne dans la TextBox6. Mais cette moyenne je ne veux pas quelle addictionne les 4 puis divise par 4.
    J'aimerai que le code trouve le chiffre le plus grand et le plus petit des 4 TextBox ignore ces chiffres et fait la moyenne traditionnel avec les 2 autres chiffre qui sont entre le plus grand et le plus petits chiffre des 4 TextBox

    Je vous met la formule que j'ai mis pour la mettre dans une cellule :

    arrondie.au.multiple(B10+C10+D10+E10-MIN(B10:E10)-MAX(B10:E10))/2);0,05)

    Merci pour l'aide, j'espère de ne pas être trop flou dans mes explications.


  2. #2
    Membre actif
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Points : 242
    Points
    242
    Par défaut
    Si ta fonction Excel marche : Utilises la fonction evaluate !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox evaluate("=(B10+C10+D10+E10-MIN(B10:E10)-MAX(B10:E10))/2)")
    /!\ Air code

    a quoi sert le "0.05" ?


    Après, si tu veux transcrire ça en VBA, au PIRE tu peux remplacer les valeurs de ta formule ci dessus par du code "classique"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print Evaluate("(" & v1 & "+" & v2 & "+" & v3 & "+" & V4 & "-MIN(" & v1 & "," & v2 & "," & v3 & "," & V4 & ")-MAX(" & v1 & "," & v2 & "," & v3 & "," & V4 & "))/2")

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Djohn92 Voir le message
    Si ta fonction Excel marche : Utilises la fonction evaluate !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox evaluate("=(B10+C10+D10+E10-MIN(B10:E10)-MAX(B10:E10))/2)")
    /!\ Air code

    a quoi sert le "0.05" ?


    Après, si tu veux transcrire ça en VBA, au PIRE tu peux remplacer les valeurs de ta formule ci dessus par du code "classique"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print Evaluate("(" & v1 & "+" & v2 & "+" & v3 & "+" & V4 & "-MIN(" & v1 & "," & v2 & "," & v3 & "," & V4 & ")-MAX(" & v1 & "," & v2 & "," & v3 & "," & V4 & "))/2")
    Salut,

    Merci pour ton aide

    Le 0.05 c est pour l'arrondis, car j'aimerai que la moyenne soit arrondit au 0.05 près.

    Sur la deuxième formule, que tu me propose, je peux remplacer les v1, v2,...., par Texbox1, TextBox2,....?

    Les valeurs sont rentrer dans les Textboxs dans l'userform.


  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pourquoi passer par evaluate quand un simple tableau d'indice 2 à 5 suffit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Tablo(2 To 5)
     
    For i = LBound(Tablo) To UBound(Tablo)
        Tablo(i) = CDbl(Replace(Me.Controls("TextBox" & i), ".", ","))
    Next i
    resultat = (Application.Sum(Tablo) - Application.Min(Tablo) - Application.Max(Tablo)) / 2
    ne reste qu'à gérer l'éventuel arrondit, à vous de jouer

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    pourquoi passer par evaluate quand un simple tableau d'indice 2 à 5 suffit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Tablo(2 To 5)
     
    For i = LBound(Tablo) To UBound(Tablo)
        Tablo(i) = CDbl(Replace(Me.Controls("TextBox" & i), ".", ","))
    Next i
    resultat = (Application.Sum(Tablo) - Application.Min(Tablo) - Application.Max(Tablo)) / 2
    ne reste qu'à gérer l'éventuel arrondit, à vous de jouer
    Bonjour,

    J'ai essayer ce code, mais aucune moyenne apparait, j'ai mis ce code dans ma TextBox6.
    Ce code prend bien le code de mes texbox2 à 5 et met la moyenne (comme précisez au dessus) ?

    Etant un débutant, j'essaye de comprendre chaque code, c 'est pas évident

    Merci de votre aide

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    mon code actuel transmet à la variable "resultat" le résultat du calcul

    il faut que tu ajoutes une lignes pour transmettre ce résultat à ta textbox6

    reste à savoir à quel moment tu veux que ça s'affiche.

    Par exemple, admettons que tu disposes un Boutton appelé "Bt_Resultat"

    quand tu cliques dessus, il fait le calcul et le met dans Textbox6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Bt_Resultat_Click()
    Dim Tablo(2 To 5)
     
    For i = LBound(Tablo) To UBound(Tablo)
        Tablo(i) = CDbl(Replace(Me.Controls("TextBox" & i), ".", ","))
    Next i
    Me.TextBox6.Value = (Application.Sum(Tablo) - Application.Min(Tablo) - Application.Max(Tablo)) / 2
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    mon code actuel transmet à la variable "resultat" le résultat du calcul

    il faut que tu ajoutes une lignes pour transmettre ce résultat à ta textbox6

    reste à savoir à quel moment tu veux que ça s'affiche.

    Par exemple, admettons que tu disposes un Boutton appelé "Bt_Resultat"

    quand tu cliques dessus, il fait le calcul et le met dans Textbox6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Bt_Resultat_Click()
    Dim Tablo(2 To 5)
     
    For i = LBound(Tablo) To UBound(Tablo)
        Tablo(i) = CDbl(Replace(Me.Controls("TextBox" & i), ".", ","))
    Next i
    Me.TextBox6.Value = (Application.Sum(Tablo) - Application.Min(Tablo) - Application.Max(Tablo)) / 2
    End Sub
    Mon souhait est que la moyenne se calcul automatiquement en remplissant les textbox2 à 5, sans l'aide de bouton.
    De plus j'ai déjà un code dans la textBox6, est ce que je peux mettre les 2, si oui est ce que l'ordre a une importance ?

    Merci de votre aide

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    le gérer dynamiquement est plus délicat ...

    on pourrait par exemple détecter que dès que les 4 textbox sont remplis et contiennent bien des chiffres, ça effectue le calcul et le renvoie dans textbox6

    si au contraire il manque un chiffre... on efface le résultat

    c'est à toi de préciser

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    le gérer dynamiquement est plus délicat ...

    on pourrait par exemple détecter que dès que les 4 textbox sont remplis et contiennent bien des chiffres, ça effectue le calcul et le renvoie dans textbox6

    si au contraire il manque un chiffre... on efface le résultat

    c'est à toi de préciser
    Oui j'aimerai que la moyenne ce généré automatiquement.

    Ton idée correspond un peut prêt à mes attentes. Je voulais savoir si c’était possible de limiter les saisies. Je voudrai qu'il refuse les nombre négatif et les nombres nombre supérieur à 10.

    Merci pour ton aide

Discussions similaires

  1. [XL-2003] macro calcul d'une moyenne avec boucle évolutive
    Par mia73 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/07/2010, 10h49
  2. Calculer une moyenne avec des jours absents
    Par guidav dans le forum Langage SQL
    Réponses: 7
    Dernier message: 25/01/2008, 09h35
  3. Calculer une moyenne avec une matrice
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 05/06/2006, 16h47
  4. methode qui calcul une moyenne du traffic
    Par siry dans le forum Développement
    Réponses: 7
    Dernier message: 05/05/2005, 17h16
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo