Calcul moyenne selon les années

Bonjour,

Avec VBA, "tout" est réalisable. J'ai essayé d'y parvenir avec une formule, en vain...

J'ai besoin de calculer la moyenne de délais de traitement figurant (Col F (F10 à F2000 dans mon vrai fichier)) en fonctionne de l'année (Col C (C10 à C2000 dans mon vrai fichier))

Cette moyenne se fait en cellule K6 selon l'année que j'aurais sélectionné en D6.

J'espère avoir été assez clair. Merci d'avance pour votre aide

13exemple.xlsx (9.73 Ko)

Bonjour,
Une proposition TCD et segments !?
Cdlt.

17exemple.xlsx (17.56 Ko)

Bonjour à tous,

Une autre approche (en K6) ?

=MOYENNE.SI.ENS(F10:F23;C10:C23;">="&DATE(D6;1;1);C10:C23;"<="&DATE(D6;12;31))

Bonjour Monadesign_83, Jean-Eric, JFL, le forum,

Un essai:

=SOMMEPROD((ANNEE(C10:C23)=D6)*(F10:F23))/SOMMEPROD((ANNEE(C10:C23)=D6)*1)

=MOYENNE(SI(ANNEE(C10:C23)=D6;F10:F23))  'matricielle: à valider par CTRL + MAJ + ENTREE
11exemple.xlsx (10.27 Ko)

Cordialement,

Bonjour à tous et merci !

J'ai essayé la formule de @JFL et cela fonctionne parfaitement !

@Jean-Eric, je suis en train de transposer ton TDC et segment (nouveau pour moi) et je dirai si cela fonctionne.

@Xorsankukai, pareil, je teste et reviens vers toi !

Encore merci , vous êtes au top

Bonjour de nouveau,

Je vous remercie de ce retour et....de votre enthousiasme !

@Jean-Eric,

Votre solution est géniale, synthèse parfaite.

Cependant, je n'arrive pas à reproduire tous ce que vous avez fait. Points bloquants :

- En quoi avez vous transformé le tableau des données ? Il semblerait que ce soit lié au TCD. Je ne pense pas pouvoir transformer mon gros tableau (env 150 colonnes et 2000 lignes) en table de TCD. (sachant que les éléments source (Date de notification et Durée de traitement) sont en plein milieu de ce gros tableau)

- Comment obtenez vous les etiquettes de lignes en année et non en xx/xx/201x ?

*NOTA : Toutes les dates de notification qui sont dans mon vrai tableau sont incrémentées par un USERFORM. Toutes les cellules sont au même format (Date *14/03/2012)

Quand je fais un filtre, certaines apparaissent regroupées par année (il suffit donc de cliquer sur la petite croix pour faire apparaitre mois et jours)

D'autres dates, apparaissent de façon isolées alors qu'elles devraient être groupée dans leurs année respectives... (c'est un point bloquant pour moi lorsque je veux faire des filtres pour diverses recherches.

Exemple en photo : 01/06/2021 03/05/2021 04/05/2021 etc devraient être regroupées sous 2021... mais elles ne le sont pas...

Il me semble que cela est à cause du NOTA* - Mais ce que je ne comprends pas c'est que cela ne pose pas de problèmes avec certaines mais avec d'autres oui. Ma vision serait correcte ? (et si oui, une solution? )

photo1

@Xorsankukai,

Vos formules fonctionnent très bien sur le fichier renvoyé, mais pas chez moi...
Ci-joint la photo de mon écran.
photo2

Re,

Merci pour le retour,

Difficile pour moi de vous aider sans fichier, , peut-être est-ce les lignes vides qui posent problème....

Un essai à l'aveugle...sans conviction...

=SOMMEPROD((ANNEE(FD10:FD2000)=FE5)*(FI10:FI2000))/SOMMEPROD((ANNEE(FD10:FD2000)=FE5)*(FI10:FI2000<>"")*1)
=MOYENNE(SI(ANNEE(FD10:FD2000)=FE5*(FI10:FI2000<>"");FI10:FI2000))     'ctrl+maj+entree

La formule de JFL est donc à privilégier (de plus, elle doit être moins gourmande en ressource me semble-t-il)


Bonne continuation,

En fait je viens de faire le calcul à la main, la formule de JFL ne fonctionne pas correctement.

En 2022 je devrais avoir une moyenne de 29,45 (22 actes avec 21, 1, 46, 36, 29, 27, 8, 29, 2, 30, 35, 27, 30, 39, 30, 38, 39, 39, 37, 27, 42, 36 jours)

Avec la formule JFL j'obtiens : 39.

Mais cela rejoins ce que je disais plus haut...

En fait, les dates sont insérées via un userform. Du coup, il faut que je rentre "en dur, à la main" les dates pour qu'elles soient prise en compte par la/les formules.

Mais j'ai 800 et quelques lignes et le tableau est "vivant" il évolue tous les jours (des actes viennent s'ajouter...) Je ne vais pas me faire à la main toutes les dates... Sachant en plus que si j'ai mis en place le userform qui vient incrémenter les dates dans les colonnes appropriées, c'est pour faciliter la tache (il y a 150 colonnes qu'il faut allait chercher manuellement pour incrémenter)...

Re,

En fait, les dates sont insérées via un userform

Peut-être que tes dates issues de ton Userform sont considérées comme du texte et non des dates.

Il faudrait agir sur le code de ton USF....

Utilises-tu Cdate ?

ta cellule = cdate(TextBox1.Value)

La plupart du temps, cela suffit à corriger le problème.

Cordialement,

Bonjour de nouveau,

En fait je viens de faire le calcul à la main, la formule de JFL ne fonctionne pas correctement.

En 2022 je devrais avoir une moyenne de 29,45 (22 actes avec 21, 1, 46, 36, 29, 27, 8, 29, 2, 30, 35, 27, 30, 39, 30, 38, 39, 39, 37, 27, 42, 36 jours)

Avec la formule JFL j'obtiens : 39.

Mais cela rejoins ce que je disais plus haut...

En fait, les dates sont insérées via un userform. Du coup, il faut que je rentre "en dur, à la main" les dates pour qu'elles soient prise en compte par la/les formules.

Mais j'ai 800 et quelques lignes et le tableau est "vivant" il évolue tous les jours (des actes viennent s'ajouter...) Je ne vais pas me faire à la main toutes les dates... Sachant en plus que si j'ai mis en place le userform qui vient incrémenter les dates dans les colonnes appropriées, c'est pour faciliter la tache (il y a 150 colonnes qu'il faut allait chercher manuellement pour incrémenter)...

D'où l'impérieuse nécessité de mettre à notre disposition un fichier représentatif de votre classeur de travail réel .....

Bonjour,

J'ai galéré mais ai réussi à transposer le fichier :)

J'ai mis par écrit dans le fichier mes problématiques, en espérant avoir été clair.

Merci d'avance pour l'aide !

:)

12test.xlsm (133.79 Ko)

Bonjour de nouveau,

Votre fichier.... comment dire......!

Certaines cellules de la colonne FD ne sont pas reconnues par Excel comme étant des dates......

Une fois réglé ce léger souci..... tout devrait rentrer dans l'ordre, la formule de calcul étant très basique.

Bon courage !

Ben, je viens de les regarder une par une, et elles sont bien toutes au format "Date"

Le problème ne vient pas de la formule, mais comme j'expliquais, du fait que les dates sont :

- Soit rentrées manuellement (reconnues)

- Soit rentrées via le UF (non reconnues)

Essayez donc de réécrire toutes les dates rentrées par UF (en vert) à la main, vous verrez que tout fonctionne nominalement.

J'ai le même souci avec d'autres cellules dans lesquelles il ne s'agit pas de dates mais de nombres classiques (cellules bien configurées au format nombre)

--> Si elles sont incrémentées par UF : non reconnues

--> Si elles sont incrémentées à la main : Tout fonctionne

Ben, je viens de les regarder une par une, et elles sont bien toutes au format "Date"

Non ! Exemple : ESTNUM(FD10) donne FAUX.
Il faut donc résoudre ce souci au préalable.

Lorsque je clique droit et que je vais dans les propriétés des cellules, elles sont toutes au format "Date"

J'ai la solution, c'est le code suivant :

          For i = 1 To 18
            If Me.Controls("TextBox" & i).Visible = True Then
                  Select Case i
                          case 16 
                                 .Cells(L, i + 144) = Cdate(Me.Controls("TextBox" & i))
                       case else
                                 .Cells(L, i + 144) =Me.Controls("TextBox" & i)
                      End Select
            End If
        Next i

Cela fonctionne comme ça parfaitement

Merci encore pour le temps consacré à mon pb !

Lorsque je clique droit et que je vais dans les propriétés des cellules, elles sont toutes au format "Date"

Ce n'est pas une condition suffisante pour qu'Excel considère REELLEMENT le contenu comme une date au sens excellien du terme. (Preuve par la formule.....)

Si votre code VBA solutionne le souci en amont..... c'est parfait !

Je comprends, mais alors quelle est la manip à faire pour RÉELLEMENT changer le contenu au format souhaité ? (mise à part par code VBA)

Bonjour de nouveau,

Je comprends, mais alors quelle est la manip à faire pour RÉELLEMENT changer le contenu au format souhaité ? (mise à part par code VBA)

Revoir en amont l'art et la manière de rapatrier les informations.

Rechercher des sujets similaires à "calcul moyenne annees"