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 :

[VBA-E] faire la moyenne et afficher dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut [VBA-E] faire la moyenne et afficher dans une cellule
    bonjour tout le monde, je voudrais réaliser une macro qui permette de prendre des éléments qui figurent sur une feuille, d'en faire la moyenne, et de recopier la moyenne dans une cellule d'une autre feuille.

    exemple : sur une feuille1, j'ai 3 chiffres : en A1, A2 et A3, et je veux faire une moyenne que j'afficherai dans la cellule b2 du tableau de ma feuille 2.
    sauriez vous comment ej peux m'y prendre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("feuil1").Select
    nombre = moyenne(A1; A2; A3)
    après pour recopier le nombre dans la valeur sur l'autre feuille, c'est là que cela pose pbm : dois-je faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheet("feuil2").range(a1)=nombre
    ?

    merci de m'éclairer

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    là je viens d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim nombre As String
    Dim moyenne As String
     
    Sheets("feuil3").Select
    nombre = moyenne(A1, A2, A3)
    Worksheet("UH").Range(c2).Value = nombre
    et cela me met un message concernant "moyenne" : cela affiche :erreut de compilation, car tableau attendu.

    Quelqu'un a t'il une idée?
    merci d'avance

  3. #3
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    C'est parce que tu declare juste moyenne en string.
    S'il te demande un tableau c'est sous cette forme la qu'il faut déclarer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim moyenne(1 To 20) As String
    enfin les chiffres changent en fonction de ce que tu veux

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    malhivertman1
    merci malhivertman1, j'ai appliqué ton conseil,
    malgré tout, il y a toujours un message d'erreur qui concerne moyenne et cela affiche : "nombre de dimensions incorect"

    en fait je voudrais faire la moyenne de pourcentage dans un tableau, qui ont trois chiffre après la virgule et qui sont de la forme : 100,000% ...


    malhivertman1

  5. #5
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Je ne connais pas enormement bien les tableaux, donc change un peu les dimensions dans moyenne (1 to 20) et tu va bien par trouver

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    oui, c'est ce que j'avais fait, ma moyenne variant entre 1 et 100, j'ai écri cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim nombre(1 To 100) As String
    Dim moyenne(1 To 100) As String
    Sheets("feuil3").Select
    nombre = moyenne(A1, A2, A3)
    Worksheet("UH").Range(c2).Value = nombre
    mais ca continue de bloker lol

    merci en tout cas d'avoir essayé de m'aider

  7. #7
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Toujours la même erreur?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    oui, il y a toujours el message d'erreur : "nombre de dimensions incorect"
    peut être y a t'l ubn pbm dans ma fonction "moyenne" ?

  9. #9
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Si tu veux juste calculer une moyenne tu peux utiliser cette fonction (que l'on peut améliorer surement je l'ai faite a la barbare ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function calculmoyenne(nomF As String, NombreValeur As Long) As Long
    Dim i As Integer
    Dim ajout As Long
    Dim f As Worksheet
    Set f = Worksheets(nomF)
    For i = 1 To NombreValeur
        ajout = ajout + f.Cells(i, 1).Value
    Next i
    calculmoyenne = ajout / NombreValeur
    End Function
    Ensuite dans ta feuille2, ou tu veux mettre la valeur tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =calculmoyenne("Feuil1",3)

    Evidemment, il faut que tu la modifie en fonction de ce que tu veux en faire

    Je vois pas pourquoi en fait tu veux faire une variable tableau ?

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 150
    Points
    20 150
    Par défaut
    bonjour

    tu peux essayer


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim Nombre As Single
    Dim Ws As Worksheet
     
    Set Ws = Sheets("Feuil3")
    Nombre = _
    Application.WorksheetFunction.Average(Ws.Range("A1"), _
    Ws.Range("A2"), Ws.Range("A3"))
     
    MsgBox Nombre
    Worksheets("UH").Range("C2").Value = Nombre


    bonne journée
    michel

  11. #11
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    oui car si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim moyenne(1 To 100) As String
     Sheets("feuil3").Select
     nombre = moyenne(A1, A2, A3)
    ca ne te donnera pas la moyenne de A1, A2 et A3.
    moyenne est compté comme variable la

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Merci tout le monde de m'avoir répondu,
    SIlkyroad, j'ai utilisé ton pbm qui marchait très bien pour les 3 cellules que j'avais cité,

    j'ai essayé de l'adapter pour d'autres cellules en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nombre = _
            Application.WorksheetFunction.Average(Ws.Range("A8"), Ws.Range("A14"), _
            Ws.Range("A20"), Ws.Range("A20"), Ws.Range("A20"), Ws.Range("A26"), _
            Ws.Range("A32"))
    mais il y a un bugg.
    Je ne pense pas avoir adapté le pgm kom il le fallait.

    Aussi, ej voulais savoir pourrais tu m'expliquer la ligne de code que je viens de copier et qui pose pbm stp?
    merci

  13. #13
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Pourquoi tu prend 3 fois la meme cellule ?

    Remarque ça devrait pas poser de problème..

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    oui j'avais mis trois fois la mm cellule par erreur, malgré tout, le bugg est tjrs la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nombre = _
            Application.WorksheetFunction.Average(Ws.Range("A8"), Ws.Range("A14"), _
            Ws.Range("A20"), Ws.Range("A26"), Ws.Range("A32"))
    le message d'erreur est :
    Impossible de lire la propriété average de al classe

  15. #15
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Nombre tu l'as définis en double j'espère ?

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 150
    Points
    20 150
    Par défaut
    rebonjour


    tu obtiens ce message d'erreur car une des 5 cellules est peut etre vide ...



    bonne journée
    michel

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    nan single lol

Discussions similaires

  1. Afficher dans une cellule le code VBA d'un bouton
    Par greenzephyr dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/11/2010, 11h01
  2. [Toutes versions] Extraire une valeur d'une ListBox pour l'afficher dans une cellule
    Par stid59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2009, 23h05
  3. Réponses: 2
    Dernier message: 24/01/2008, 14h32
  4. [VBA-PP]fonction qui écrit un chiffre dans une cellule excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/04/2006, 20h34
  5. [C#] contrôle affichable dans une cellule de datagrid
    Par grome dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/04/2006, 17h22

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