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

Macros et VBA Excel Discussion :

Moyenne de n notes


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut Moyenne de n notes
    Bonjour tout le monde,
    Je voulais tenter l'exo suivant avec la boucle for. Calculer la moyenne de n notes (sans coefficients). Le souci qui me pose, c'est que lorsque je veux déclarer des paramètres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function moyenne (Byval X1 As integer, X2 As integer, . . .  Xn As integer
    Je sais c'est faux mais voilà je ne sais pas comment aborder ce problème. J'aimerais bien que vous m'aidiez s'il vous plaît. Merci

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut

    Tu as, deja, une premiere approche qui consiste a utiliser les outils present dans excel, qui te permette de la faire avec 30 argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.WorksheetFunction.Average(Arg1,Arg2,....)
    Autrement si tu veux "refaire" une telle fonction tu peux metre carrement As range dans tes paramettres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function MaMoyenne (Mescellules as range) as double
    As range pouvant representer une ou plusieur cellules tu pourra utiliser MesCellules.count pour en connaitre le nombre.

    Puis ton calcu sur tes cellules en faisant par exemple une boucle sur toutes les cellules selectionnées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim UneCel As Range
    Dim DblMoyen As Double
    For each UneCell In MesCellules
      ....DblMoyen = CDbl(UneCell.value) //On transtype les valeur contenu dans la cellule (attention il serrai bien de verifier avant que ce contenu est numeric)
      ....
     
      MaMoyenne = DblMoyen //On transmet le resultat du calcul
    Next
    A++
    Qwaz

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il faut utiliser paramarray ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Function paramet(ParamArray x() As Variant) As Variant
    ' x peut recevoir une liste de valeurs ou un ou plusieurs range ou un ou lusieurs tableaux
    ' ou une combinaison de ces éléments
    Dim boucle1 As Variant
    Dim boucle2 As Variant
    For Each boucle1 In x
       If IsArray(boucle1) Then
       'dans ce cas l'élément est un range ou un tableau et on va lire son contenu
                For Each boucle2 In boucle1
                MsgBox (boucle2)
                Next boucle2
       Else
       'on a affaire a un élément isolé
       MsgBox (boucle1)
       End If
    Next boucle1
    paramet = True
    End Function
    en mode feuille de calcul cela donne =paramet(A1:A2;17;36;{1;7;9};A10:A11)
    où j'ai choisi pour paramètres deux ranges trois nombres et une matrice

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Bonjour,
    Excusez-moi je suis vraiment desolé de vous annoncer que la notion de worksheet function ni mescellules je n'ai jamais entendu parler. Je sais que je suis vraiment chiant. Pardon

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    alors pour worksheet fonction c'est un objet qui permet d'acceder au fonction d'excel un petit F1 devrait t'en dire d'avantage.

    Pour MesCellule ca n'est pas un mot clé, c'est uniquement un nom de paramettre que j'ai choisi et defini c'est tout.

    Peut etre devrais tu nous en dire plus sur ce que tu souhaites realiser, nous pourrions peut etre te proposé des solution plus en rapport avec ce que tu cherche exactement.

    A++
    Qwaz

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,
    en fait je veux calculer la moyenne de n notes en utilisant la boucle for en posant i variant de 0 à n. Merci

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    Ok, mais ces notes elles se trouvent dans un fichier excel je presume, sinon tu es pas sur le bon forum , donc il serait peut etre interessant de savoir comment s'organise ton fichier, ainsi au lieu de passer des valeurs a ta function tu pourrais peut etre lui passer les cellules ou la place de cellules qui contiennent ces notes.
    Met un exemple de fichier avec des notes bidons, ca evitera que l'on te produise un code qui ne correspondra pas exactement a ce que tu recherches.
    A++
    Qwaz

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,
    voici une liste de note:
    8
    9
    10
    11
    12
    7
    13
    14
    6
    15
    5
    Imaginons qu'on veut calculer la moyenne de cette liste avec la boucle for. J'ai une idée c'est que je fais une boucle for avec i allant de n avec i au départ zéro puis on incrémente jusqu'à arriver le nombre n (ici notre n sera de 11). On départ on déclare les deux variables i, res avec res = 0. Mon souci va se poser au départ dans le corps de fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function moyenne (Byval X1 as Integer, .... n notes
    Merci

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonsoir,

    ou est ce que dois recupérer ses notes ?
    je suppose que c est ds un fichier excel et que ces dernieres sont placées ds une colonne ou bien sur plusieurs lignes

    donc avec ta fonction moyenne
    tu lui transmet l argument range qui correspondra a la colonne des notes
    puis tu boucle sur chaque element de cet objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function moyenne (x1 as range)
    dim notes as range
    dim total
    dim i
    for each notes in x1
    total = notes.value + total
    i = i+1
    next 
    moyenne = total/i

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par bolltt Voir le message
    Bonsoir,
    voici une liste de note:
    8
    9
    10
    11
    12
    7
    13
    14
    6
    15
    5
    Imaginons qu'on veut calculer la moyenne de cette liste avec la boucle for.
    Bonsoir,

    J'ignore comme les autres ce qui est appelée ici une liste de notes.
    Je me contente de répondre à la demande faite...
    Ici, avec un exemple d'utilisation d'un Array contenant les notes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
     
    Private Sub Command1_Click()
      Dim toto
      toto = Array(8, 9, 10, 11, 12, 7, 13, 14, 6, 15, 5)
      MsgBox "la moyenne de tes notes est " & moyenne(toto)
    End Sub
     
    Private Function moyenne(toto) As Single
      Dim i As Integer
      For i = 0 To UBound(toto)
        moyenne = moyenne + toto(i)
      Next
      moyenne = moyenne / (UBound(toto) + 1)
    End Function
    Ensuite : le principe serait le même, en adaptant ce code, que l'on utilise une Liste dans une Lisbox, dans un tableau dynamique, ou dans un Range d'Excel...

    Voilà.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,
    Merci tout le monde
    qu'est ce que veut dire Range? et puis listbox désigne une liste de n éléments qui se represente sous forme de colonnes ou de ligne sous excel n'est-ce pas?

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Range veut dire plage ...
    Une ListBox est un contrôle

    Tu pourrais sans doute commencer par ouvrir ton aide sur chacun de ces deux mots ...

  13. #13
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir
    tout simplement il suffit d'insérer ce code dans un module et tu observe le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Calcul()
    Moyenne = [AVERAGE(A1:A11)]  ' admétant que les données se trouvent dans la plage A1 à A11
    MsgBox Moyenne
    End Sub
    Abed_H

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 62
    Points : 24
    Points
    24
    Par défaut
    Merci,
    Dans ma version d'excel, j'appuie sur F1, je n'ai pas la réponse souhaitée c'est ça le problème

Discussions similaires

  1. moyenne des notes, min, max
    Par abbaplatin dans le forum C++Builder
    Réponses: 4
    Dernier message: 31/12/2018, 14h35
  2. un programme de calcul d'une note moyenne mais
    Par Dr walid dans le forum Débuter
    Réponses: 2
    Dernier message: 09/10/2009, 21h28
  3. [Tableaux] Trier un tableau par note moyenne
    Par Jiraiya42 dans le forum Langage
    Réponses: 14
    Dernier message: 23/09/2007, 23h55
  4. [Tableaux] Tableau de notes + moyenne
    Par lordbdp dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2007, 22h34
  5. Calcul de note puis moyenne
    Par kOrt3x dans le forum Ada
    Réponses: 7
    Dernier message: 06/11/2006, 10h24

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