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] Fonction personnalisée moyenne à fin M


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut [VBA-E] Fonction personnalisée moyenne à fin M
    Bonjour,

    Je viens de créer une fonction personnalisée qui me permet de calculer une moyenne à une date donnée. Par exemple la moyenne à fin mars = (janvier + février + mars) / 3.

    Voici le code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Function MoyenneMois(Référence As Range, janvier As Range, février As Range, mars As Range, _
    avril As Range, mai As Range, juin As Range, juillet As Range, août As Range, septembre As Range, _
    octobre As Range, novembre As Range, décembre As Range)
     
    If Référence = "janvier" Then
    MoyenneMois = janvier
    End If
     
    If Référence = "février" Then
    MoyenneMois = (janvier + février) / 2
    End If
     
    If Référence = "mars" Then
    MoyenneMois = (janvier + février + mars) / 3
    End If
     
    If Référence = "avril" Then
    MoyenneMois = (janvier + février + mars + avril) / 4
    End If
     
    If Référence = "mai" Then
    MoyenneMois = (janvier + février + mars + avril + mai) / 5
    End If
     
    If Référence = "juin" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin) / 6
    End If
     
    If Référence = "juillet" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet) / 7
    End If
     
    If Référence = "août" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet + août) / 8
    End If
     
    If Référence = "septembre" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet + août _
    + septembre) / 9
    End If
     
    If Référence = "octobre" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet + août _
    + septembre + octobre) / 10
    End If
     
    If Référence = "novembre" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet + août _
    + septembre + octobre + novembre) / 11
    End If
     
    If Référence = "décembre" Then
    MoyenneMois = (janvier + février + mars + avril + mai + juin + juillet + août _
    + septembre + octobre + novembre + décembre) / 12
    End If
     
    End Function
    le fichier : Moyenne à fin M.zip

    Le code fonctionne. Cependant je trouve la structure très lourde. Si vous avez connaissance de moyens plus légers et plus intelligents pour arriver au même résultat ca m'intéresse

    Merci. Bonne soirée. Geoffray

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Peut-être aimerais-tu mieux ceci:
    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
    Function MoyenneMois(Mois As Range, Periode As Range, ValeursMensuelles As Range)
        Dim cellule As Range, ligne As Integer
        Dim total As Integer, i As Integer
        total = 0
        i = 0
        For Each cellule In Periode
            i = i + 1
            If cellule = Mois Then Exit For
        Next
        ligne = cellule.Row
        For Each cellule In ValeursMensuelles
            total = total + cellule.Value
            If cellule.Row = ligne Then Exit For
        Next
        MoyenneMois = total \ i
    End Function
    Periode correspond à la source de ta liste de mois et ValeursMensuelles aux valeurs mensuelles... Range("B5:B16") si tu préfères.

  3. #3
    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 144
    Points
    20 144
    Par défaut
    bonsoir Geoffray , bonsoir Zazaraignée

    ci joint une autre possibilité


    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
    20
    21
    Function MoyenneMois(Référence As Range, janvier As Range, _
    février As Single, mars As Range, avril As Range, mai As Range, _
    juin As Range, juillet As Range, août As Range, septembre As Range, _
    octobre As Range, novembre As Range, décembre As Range)
     
    Dim i As Byte
    Dim x As Single
    Dim Tableau()
     
    Tableau = Array(janvier, février, mars, avril, mai, juin, juillet, août _
    , septembre, octobre, novembre, décembre)
     
    For i = 1 To 12
        x = x + Tableau(i - 1)
        If MonthName(i) = Référence Then
        MoyenneMois = x / i
        Exit Function
        End If
    Next i
     
    End Function


    bonne soiree
    michel


    ps
    evite d'utiliser des caracteres speciaux dans les definitions de variables

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci zazaraignée et SilkyRoad,

    Je viens de tester vos 2 codes et je préfère de loin vos solutions. Il me manque encore certains réflexes. Je prends vos codes sous le coude et je me mets aux révisions


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction personnalisée VBA Excel
    Par PM2801 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/05/2014, 20h23
  2. [XL-2000] Code VBA bloqué par fonction personnalisée
    Par PICHOUX dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/05/2012, 22h58
  3. [VBA]Fonction personnalisée avec "If"
    Par FWSMulder dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2008, 23h28
  4. [VBA] recherche fonction qui annonce la fin d'une requete
    Par MeHo_ dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 02/06/2008, 09h22
  5. [VBA-E] : Fonction personnalisée moyennes trimestrielles
    Par Geoffray dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/06/2006, 18h25

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