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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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 éclairé Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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 éclairé Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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
    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
    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 ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Membre éclairé Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    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

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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

  10. #10
    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
    Par défaut
    Pourquoi tu prend 3 fois la meme cellule ?

    Remarque ça devrait pas poser de problème..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    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

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, 10h01
  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, 22h05
  3. Réponses: 2
    Dernier message: 24/01/2008, 13h32
  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, 19h34
  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, 16h22

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