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 :

Automatisation moyenne en fonction de la date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut Automatisation moyenne en fonction de la date
    Bonjour !

    J'ai besoin d'un peu d'aide pour un fichier Excel...

    Alors, voila mon problème :

    J'ai un fichier du boulot à compléter tout au long de l'année. Pour chaque mois de l'année, j'ai différentes séries de données pour chaques semaines du mois, je calcule donc à chaque fois une moyenne, le max, le min sur le mois.
    Le données sont extraites automatiquement d'un logiciel, donc le fichier Excel a une forme prédéterminée, je ne peux pas bouger les colonnes.
    Du coup, c'est un peu répétitif parceque il n'y a pas toujours le même nombre de semaine dans le mois, donc je copie à chaque fois le calcul précédent, je le colle au début du mois suivant, puis je dois adapter, donc souvent sélectionner une cellule en plus pour faire les calculs etc.

    J'aimerais pouvoir indiquer à Excel de faire les calculs sur tout le mois, donc en fonction de la date.

    Je sais pas si c'est très compréhensible, donc je vous joins un exemple type (les données du fichiers étant confidentielles, il s'agit d'un exemple. Il y a beaucoup plus de colonnes normalement !)

    Je ne sais pas si c'ets faisable sans macros ? Ce serait mieux, mais sinon, les macros ne me posent pas de problèmes ! Ce que j'aimerai c'est vraiment ne plus me poser la question de est ce que ça a bien pris la case en plus.

    Merci pour votre aide !
    Mathilde

    exemple fichier.xlsx

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    Pas besoin de macro, on peut très bien utiliser un somme.si.ens et un nb.si.ens en utilisant "<="&DATE // ">="&DATE+1 comme critères
    CF PJ

    Cordialement,

    Mr Poulpe
    Fichiers attachés Fichiers attachés

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ca dépend comment tu entres tes données. Est-ce que tu fais un copier/coller et si oui, comment ? semaine par semaine, mois par mois, par cellule ou par bloc de cellules ? Donne-moi un exemple.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Alors :

    Les colonnes A,C,E sont remplies automatiquement par récupération de données depuis un logiciel, moi je ne fais que tirer les valeurs et elles s'inscrivent automatiquement.

    Ensuite c'est tout bête, je remplis la colonne B en faisant la moyenne, max, min sur les valeurs de la colonne C mois par mois


    Mr. poulpe : cette solution ne convient pas, je dois garder la forme de fichier comme dans l'exemple, dans le vrai fichier, il y a beaucoup d'onglet, donc je peux pas me permettre d'en rajouter encore, sinon trop compliqué pour lire. J'aimerai avoir exactement ce que je fais déjà, mais version automatique

    Je ne sais pas si c'est trop possible à vrai dire !

    Merci de prendre un peu de temps pour m'aider !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Autant pour moi, je n'avais pas vu où il fallait inscrire les résultats.

    Ci-joint une autre solution, en rajoutant une colonne supplémentaire.

    La solution macro est faisable mais me semble très lourde au vu du besoin...
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    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
    Sub Remplissage()
        Dim C As Range, Sem As Byte, DerLig As Byte
        DerLig = Cells(Rows.Count, 1).End(xlUp).Row
        For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
            With C.Offset(, 1)
                On Error Resume Next
                If (Month(C.Value) <> Month(C.Offset(-1))) Then
     
                    For i = C.Row To DerLig
                        If Month(Cells(i, 1)) = Month(Cells(C.Row, 1)) Then
                            Sem = Sem + 1
                        Else
                            Exit For
                        End If
                    Next i
                    .Formula = "=AVERAGE(" & Cells(C.Row, 3).Address & ":" & _
                        Cells(C.Row + Sem - 1, 3).Address & ")"
                    .Offset(, 2).Formula = "=AVERAGE(" & .Offset(, 3).Address & ":" & _
                        .Offset(Sem - 1, 3).Address & ")"
                    .Offset(1).Formula = "=MAX(" & Cells(C.Row, 3).Address & ":" & _
                        Cells(C.Row + Sem - 1, 3).Address & ")"
                    .Offset(1, 2).Formula = "=MAX(" & .Offset(, 3).Address & ":" & _
                        .Offset(Sem - 1, 3).Address & ")"
                    .Offset(2).Formula = "=MIN(" & Cells(C.Row, 3).Address & ":" & _
                        Cells(C.Row + Sem - 1, 3).Address & ")"
                    .Offset(2, 2).Formula = "=MIN(" & .Offset(, 3).Address & ":" & _
                        .Offset(Sem - 1, 3).Address & ")"
                End If
                On Error GoTo 0
            End With
        Next C
    End Sub

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2014, 09h49
  2. [XL-2010] Moyennes en fonction des dates
    Par fastmike dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/01/2013, 14h34
  3. Réponses: 2
    Dernier message: 06/01/2009, 20h39
  4. Affichage d'évènements en fonction de leur date ?
    Par swirtel dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2005, 11h30
  5. Trier les enregistrements en fonction de la date
    Par mpereg dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 12/09/2004, 15h16

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