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

Access Discussion :

Calcul médiane sur regroupements [AC-2010]


Sujet :

Access

  1. #41
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    Comment vas-tu ? Ici, ca a évolué, j’ai enfin des réponses à mes interrogations et on va enfin pouvoir arriver à une version finale.

    Ce qui change :

    1) Sélection :
    On ne sélectionne plus une année mais uniquement un individu et l’état est basé sur le bilan le plus récent de cet individu
    Et on ne tient compte que d’un seul bilan par individu (le bilan le plus récent de chaque individu).

    (Pour être honnête, c’est ce qui avait été déterminé dès le départ mais je suis parti sur cette sélection d’année par erreur…)

    Ex :
    en sélectionnant l’individu A dont le dernier bilan reçu est de 2014 , je pourrais etre amené à comparer ce bilan à d’autres bilans de la même typologie ou du meme groupe régional ou de la même tranche d’effectif mais il se peut que ces bilans soient de 2013 , 2012 voire avant.


    Malgré tout nous nous efforçons ici de nous mettre à jour le plus possible et nous devrions n’avoir qu’une à 2 années de décalage dans le pire des cas. Quoiqu’il arrive, cela ne change rien au fonctionnement de l’état en lui-même.


    2) Etat :
    - Quelques lignes supprimées , d’autres ajoutés (table tCanevas modifiée en conséquence)
    - La moyenne est maintenant positionnée entre le MQ1 et le MQ4 (juste deplacement du champ dans l’état)
    - Au niveau des %, de manière à pouvoir calculer le % de la moyenne MOY , de MQ1 et de MQ4, pour chacun des regroupements (NATIONAL/TYPOLOGIE/GROUPE REGIONAL/TRANCHE D’ EFFECTIF) ,
    j’ai ajouté à la table TOUS RATIOS EN K€ les données détail manquantes pour calculer ces % .

    Ces champs de % sont au nombre de 8 – positions 11 à 15 , positions 20, 27 et 28 de la table tCanevas.

    Détail des calculs (champs de la table TOUS RATIOS EN K€) :
    Position 11 : Taux de marge brute : [R02_MB GLOBALE]/[R01_CHIFFRE D'AFFAIRES HT]
    Position 12 : Excédent brut d’exploitation : [R05_EBE]/[R01_CHIFFRE D'AFFAIRES HT]
    Position 13 : Résultat d’exploitation :[R06_RES EXPL]/[R01_CHIFFRE D'AFFAIRES HT]
    Position 14 : Résultat net : [Resultat Net]/[R01_CHIFFRE D'AFFAIRES HT]
    Position 15 : Charges de personnel : [CHRG_PERSONNEL]/[R04_VA]
    Position 20 : Capitaux propres avec c.c % C.A. : [CAP PROPRES AVEC CC]/[R01_CHIFFRE D'AFFAIRES HT]
    Position 27 : Taux d’absorption : [FactAtel+MBPR]/[FW+FX+FY+FZ]
    Position 28 : Rentab cap permanents : [CAP_PERM_VAL]/[RCAI_VAL]

    Voici
    En espérant que tu pourras m’aider à finaliser ce projet

    J’attends de voir que tu as lu ce message pour te faire passer ma bdd

    Un GRAND MERCI et un excellent Weekend
    Arnaud

  2. #42
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour Arnaud,

    Je t’aiderai volontiers… si tu fais l’effort le premier. Mon but n’est pas de fournir à ton entreprise une application clé en main, mais de t’aider à progresser dans l’utilisation d’Access.
    Tu devrais pouvoir t’en sortir avec les explications et les exemples fournis jusqu’ici.
    Je propose que tu te serves de la base de données que j’ai rendue anonyme (tu complètes avec les quelques données nouvelles que tu annonces) pour faire tes essais.
    Et là où tu rencontres des difficultés, tu poses la question en joignant la base de test si cela aide à comprendre ton problème.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #43
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    entièrement d'accord avec ça . J'avoue, j'ai été un peu trivial dans ma demande sous l'effet du délai, je m'en excuse.

    Effectivement je vais me plonger dedans et tenter par moi même dans un premier temps

    Merci
    A tres bientôt

    Arnaud

  4. #44
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    j'avoue sécher totalement et pas avancé d'un iota apres y avoir pourtant passé beaucoup de temps depuis le debut de semaine.
    Je ne parviens pas à indiquer que je souhaite tenir compte des Max Année bilan de chaque concess dans mon SELECT, ... avec un "WITH" ??

    Je vais ressortir mes quelques cours d'initiation au VBA, ne serait-ce que pour revoir le respect de la syntaxe ...

    Si je n'avance pas d'ici fin de semaine, je pense que je vais devoir essayer de réécrire sous forme de requetes séparées avec un état qui comporte l'ensemble des calculs- une usine à gaz en somme - car mon niveau en VBA est bien trop limité pour atteindre le résultat souhaité avec pourtant cette base super solide que tu m'as mise en mains.

    Si tu as quelques pistes pour m'aider à avancer je suis preneur evidemment car le but c'est que cette base fonctionne mais aussi et surtout, comme tu l'as tres justement dit, que je comprenne comment elle fonctionne de manière à pouvoir la faire évoluer le cas échéant. Et là, même si je comprends la logique globale , modifier l'existant et transformer les lignes de code
    m'est impossible avec mes connaissances actuelles

    Merci et excellente soirée

    Arnaud

  5. #45
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je suis désolé de n'être pas disponible pour l'instant.

    Je te suggère d'ouvrir une nouvelle discussion pour solliciter l'aide d'un autre forumeur.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #46
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    OK j'ai tenté ma chance

    merci et très bon weekend
    Arnaud

  7. #47
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    Je reviens de congés ce jour. Dur...
    je viens de relancer ma (nouvelle) discussion car à ce jour je n'ai reçu aucune réponse....

    Pourrais tu me mettre sur une piste pour m'aider à avancer si tu as un tout petit peu de temps à me consacrer ?
    Je vais devoir de toutes façons revoir le delai de mise à dispo de cet état (plutot sur juin)

    merci
    Arnaud

  8. #48
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 41
    Points : 13
    Points
    13
    Par défaut
    Bonjour Claude

    Alleluia !!
    j'ai finalement réussi a atteindre mon objectif en adaptant le code et en mixant avec des requetes.
    Je suis passé par des creations de tables distinctes pour chacun des 4 niveaux de regroupement, ce qui m'a permis de n'y stocker qu'un seul bilan (le dernier) pour chaque individu.
    Une table TOUS RATIOS NATIONAL / une table TOUS RATIOS TYPO , etc...

    Ca a été fastidieux mais je suis arrivé au bout et j'en suis fier .

    Merci encore pour l'aide apportée car j'ai beaucoup appris. Peut etre à une prochaine fois sur un nouveau sujet.

    Merci
    Arnaud

    Pour info voici le code adapté de l'état

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
     
     
    Option Compare Database
    Option Explicit
     
     
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
      Dim ctl As Control
     
      '---------------------
      'Données de l'individu
      '---------------------
     
      Me.valIndividu = DLookup("[" & Me.txtCanCode & "]", "[TOUS RATIOS en K€]", "" _
                         & "concess=""" & Reports![eRatios].[txtIndividu] & """ AND [Année N bilan]=" & Forms![fSelection].[txtAnnee])
     
      '-------------------
      'Données du National
      '-------------------
      'Création tEchantillon
      DoCmd.SetWarnings False
      DoCmd.RunSQL "SELECT [" & Me.txtCanCode & "] AS Donnees  INTO tEchantillon " _
                                        & "FROM [TOUS RATIOS en K€_NATIONAL] " _
                                        & "ORDER BY [" & Me.txtCanCode & "];"
      DoCmd.SetWarnings True
     
      If Me.txtFormatCol = "Percent" Then  ' Les pourcentages ne sont agrégeables,on va chercher Q1 , Q3 et valeur mediane (AgregationPourcent)
          For Each ctl In Me.Controls
                If ctl.Name Like "Nl*" Then
                Me(ctl.Name).Format = txtFormatCol
                Me.valIndividu.Format = Me.txtFormatCol
                Call AgregationPourcent("Nl")
                End If
          Next ctl
      Else
        For Each ctl In Me.Controls
            If ctl.Name Like "Nl*" Then
            Me(ctl.Name).Format = txtFormatCol
            Me.valIndividu.Format = Me.txtFormatCol
            Call Agregation("Nl")
            End If
          Next ctl
      End If
     
      '---------------------------
      'Données du Groupe Typologie
      '---------------------------
      'Création tEchantillon
      DoCmd.SetWarnings False
      DoCmd.RunSQL "SELECT [" & Me.txtCanCode & "] AS Donnees  INTO tEchantillon " _
                                        & "FROM [TOUS RATIOS en K€_TYPO] " _
                     & "WHERE [typologie] = [Forms]![fSelection]![txttypologie]" _
                     & "ORDER BY [" & Me.txtCanCode & "];"
      DoCmd.SetWarnings True
     
      If Me.txtFormatCol = "Percent" Then  ' Les pourcentages ne sont agrégeables,on va chercher Q1 , Q3 et valeur mediane (AgregationPourcent)
          For Each ctl In Me.Controls
                If ctl.Name Like "Typo*" Then
                Me(ctl.Name).Format = txtFormatCol
                Me.valIndividu.Format = Me.txtFormatCol
                Call AgregationPourcent("Typo")
                End If
          Next ctl
      Else
        For Each ctl In Me.Controls
            If ctl.Name Like "Typo*" Then
            Me(ctl.Name).Format = txtFormatCol
            Me.valIndividu.Format = Me.txtFormatCol
            Call Agregation("Typo")
            End If
          Next ctl
      End If
     
      '--------------------------
      'Données du Groupe Régional
      '--------------------------
      'Création tEchantillon
      DoCmd.SetWarnings False
      DoCmd.RunSQL "SELECT [" & Me.txtCanCode & "] AS Donnees  INTO tEchantillon " _
                                        & "FROM [TOUS RATIOS en K€_GROUPEREG] " _
                     & "WHERE [groupe regional] = [Forms]![fSelection]![txtCodeGroupe] " _
                     & "ORDER BY [" & Me.txtCanCode & "];"
       DoCmd.SetWarnings True
     
       If Me.txtFormatCol = "Percent" Then  ' Les pourcentages ne sont agrégeables,on va chercher Q1 , Q3 et valeur mediane (AgregationPourcent)
          For Each ctl In Me.Controls
                If ctl.Name Like "Gr*" Then
                Me(ctl.Name).Format = txtFormatCol
                Me.valIndividu.Format = Me.txtFormatCol
                Call AgregationPourcent("Gr")
                End If
          Next ctl
      Else
        For Each ctl In Me.Controls
            If ctl.Name Like "Gr*" Then
            Me(ctl.Name).Format = txtFormatCol
            Me.valIndividu.Format = Me.txtFormatCol
            Call Agregation("Gr")
            End If
          Next ctl
      End If
     
      '---------------------------
      'Données du Groupe Effectif
      '---------------------------
      'Création tEchantillon
      DoCmd.SetWarnings False
      DoCmd.RunSQL "SELECT [" & Me.txtCanCode & "] AS Donnees  INTO tEchantillon " _
                                        & "FROM [TOUS RATIOS en K€_EFF] " _
                     & "WHERE [groupe_effectif] = [Forms]![fSelection]![txteffectif]" _
                     & "ORDER BY [" & Me.txtCanCode & "];"
      DoCmd.SetWarnings True
     
    If Me.txtFormatCol = "Percent" Then  ' Les pourcentages ne sont agrégeables,on va chercher Q1 , Q3 et valeur mediane (AgregationPourcent)
          For Each ctl In Me.Controls
                If ctl.Name Like "Eff*" Then
                Me(ctl.Name).Format = txtFormatCol
                Me.valIndividu.Format = Me.txtFormatCol
                Call AgregationPourcent("Eff")
                End If
          Next ctl
      Else
        For Each ctl In Me.Controls
            If ctl.Name Like "Eff*" Then
            Me(ctl.Name).Format = txtFormatCol
            Me.valIndividu.Format = Me.txtFormatCol
            Call Agregation("Eff")
            End If
          Next ctl
      End If
     
    End Sub
     
    Private Sub Report_Close()
      DoCmd.Restore
    End Sub
     
    Private Sub Report_Open(Cancel As Integer)
      DoCmd.Maximize
    End Sub
     
    Public Sub Agregation(Groupe As String)
      Dim rst As Recordset
      Dim i As Integer
      Dim iNbre As Integer
      'Création du record set
      Set rst = CurrentDb.OpenRecordset("tEchantillon")
      If rst.RecordCount = 0 Then
          Me(Groupe & "Moy") = "-"
          Me(Groupe & "MQ1") = "-"
          Me(Groupe & "MQ4") = "-"
          Exit Sub
      End If
     'Moyenne
      Me(Groupe & "Moy") = 0
      Do Until rst.EOF
         Me(Groupe & "Moy") = Me(Groupe & "Moy") + rst.Fields(0)
         rst.MoveNext
       Loop
       Me(Groupe & "Moy") = Me(Groupe & "Moy") / rst.RecordCount
       'Moyenne des Q1 et Q4
          'Nbre d'enregistrements du quartile
       iNbre = rst.RecordCount \ 4   'l'opérateur \ donne la partie entière du quotient
       If iNbre = 0 Then iNbre = 1
          'Moyenne des Q1
       rst.MoveFirst
       Me(Groupe & "MQ1") = 0
       For i = 1 To iNbre
         Me(Groupe & "MQ1") = Me(Groupe & "MQ1") + rst.Fields(0)
         rst.MoveNext
       Next i
       Me(Groupe & "MQ1") = Me(Groupe & "MQ1") / iNbre
          'Moyenne des Q4
       rst.MoveLast
       Me(Groupe & "MQ4") = 0
       For i = 1 To iNbre
         Me(Groupe & "MQ4") = Me(Groupe & "MQ4") + rst.Fields(0)
         rst.MovePrevious
       Next i
       Me(Groupe & "MQ4") = Me(Groupe & "MQ4") / iNbre
       'Libérer
       rst.Close
       Set rst = Nothing
    End Sub
     
    Public Sub AgregationPourcent(Groupe As String)
      Dim rst As Recordset
      'Création du record set
      Set rst = CurrentDb.OpenRecordset("tEchantillon")
      If rst.RecordCount = 0 Then
          Me(Groupe & "Moy") = "-"
          Me(Groupe & "MQ1") = "-"
          Me(Groupe & "MQ4") = "-"
          Exit Sub
      End If
     'valeurMoyenne
       rst.PercentPosition = 50
       If rst.RecordCount Mod 2 = 0 Then rst.MovePrevious
       Me(Groupe & "Moy") = rst.Fields(0)
     'valeur Q1, valeur Q3
       rst.PercentPosition = 25
       If rst.RecordCount Mod 4 = 0 Then rst.MovePrevious
       Me(Groupe & "MQ1") = rst.Fields(0)
       rst.PercentPosition = 75
       If rst.RecordCount Mod 4 = 0 Then rst.MovePrevious
       Me(Groupe & "MQ4") = rst.Fields(0)
     
       'Libérer
       rst.Close
       Set rst = Nothing
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Calculer les mode et médiane sur une serie de données
    Par khaled87 dans le forum Méthodes exploratoires
    Réponses: 0
    Dernier message: 21/10/2014, 20h56
  2. [AC-2003] Calcul de la Médiane avec regroupement sur un champ
    Par Antisthene dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/07/2013, 21h56
  3. [XL-2007] calcul médiane sur des valeurs filtrées
    Par Jmtafam dans le forum Excel
    Réponses: 3
    Dernier message: 02/02/2010, 11h34
  4. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53
  5. calcul durée sur access
    Par juliette2 dans le forum Access
    Réponses: 2
    Dernier message: 23/11/2005, 13h56

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