Extraction de données pour statistique

Jondsyl

XLDnaute Nouveau
Bonjour,

Onglet, DI_2016, j'ai un tableau de données, extraction d'un autre logiciel
je dois réaliser des stats ...

Onglet bilan Atelier :
Dans la colonne B, je dois afficher la liste des intervenants sans doublon (onglet DI-2016, colonne S) et par ordre alphabétique ci-possible.
je dois mettre automatiquement la personne responsable de l'atelier (colonne F dans le tableau de données)

Je n'arrive à rien, merci de votre aide

Sylvain
 

Pièces jointes

  • Test.xlsx
    277 KB · Affichages: 46
  • Test.xlsx
    277 KB · Affichages: 45

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Mais si c'est possible. Pour "DI-MES" vous ajoutez 1 à la colonne 6 et aussi 1 à la colonne 5, Pour "DI-SAV" vous ajoutez 1 à la colonne qui lui est propre et aussi 1 à la colonne 5. Remarquez: des formules 'horizontales' ne sont pas très pénalisantes. On pourrait en mettre quelques unes d'un seul coup sur certaines colonnes tout à la fin si vous préférez. Comme ça on n'a plus à s'occuper, dans le corps de la boucle interne, que des colonnes qui permettront de calculer tout le reste à l'aide de ces formules.
Et bien sûr s'il faut ajouter 1 à la colonne 5 quelque soit le DI vous le faites tout simplement, sans faire de If !
Et si les colonnes spécifiques de chaque DI ne servaient qu'à obtenir cette somme, et bien on n'en aura plus besoin du tout. Mais je ne crois pas, n'est-ce pas, sinon vous auriez simplement eu une formule NB.SI pour ce que vous appelez l'atelier, ou l'intervenant je ne sais plus…
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Bon, ta métode est efficace
Je comprend rien (pas grand chose) donc je cherche et je trouve (enfin je pense)

Voila ce que j'ai fait
Document Cjoint

Les colonnes 32 à 35 c'est une somme de facture (colonne Y(25) dans les données) je ne sais pas faire

Merci pour ton aide
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Réfléchis: pour les sommes de montants c'est comme pour les nombres devant résulter d'un comptage, sauf qu'au lieu d'ajouter 1 dans la bonne colonne on y ajoute le montant Détail(25)
Il y aurait sans doute intérêt à faire un Select Case Détail(8) pour ne pas le tester plusieurs fois les deux cas et grouper dans chaque Case tout ce qu'il y a à faire dans ce cas, mais à part ça, ça me parait pas mal.

Information: j'ai nommé "BilanAtelier" la plage A18:AI2… je ne sais plus où elle se terminait car ça a maintenant disparu, supprimé toutes les lignes derrière qui ne servaient à rien. Dans la procédure remplacé les deux dernières instructions par :
VB:
ValPlgAju(Me.[BilanAtelier], L) = T
Ça donne un résultat plus propre et un graphique plus lisible (après rectification de la référence de la plage source de l'axe des X qui était une plage d'un autre classeur !)
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Super Ca marche
Par contre pour nommer une plage je n'ai pas compris, et donc cela ne marche pas

Capture.jpg

Est t'il possible de nommer une plage avec condition, genre tous les ateliers du secteur geo "Sud - Est" ?

Merci beaucoup je suis déjà super comptant !
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    31.1 KB · Affichages: 32

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Bonjour.
J'ai pourtant vu pleins de noms dans le classeur et en particulier dans cette feuille ! D'où viennent ils ? Il serait bon de faire le ménage !
Ce serait possible si au lieu d'être classé par atelier c'était classé par secteur géo.
Un SsGroup Secteur qui englobe tout ça, juste avant le Next Secteur on enregistre dans Secteur.Tag la valeur de L et on nomme les parties à la fin
On pourrait avoir besoin de cette fonction pour former des noms valides à partir de Secteur.Id :
VB:
Function NomValide(ByVal Z As String) As String
Dim P&, C$, Minus As Boolean
For P = 1 To Len(Z)
   C = Mid$(Z, P, 1)
   If UCase(C) <> LCase(C) Then
      NomValide = NomValide & IIf(Minus, LCase(C), UCase(C))
      Minus = True
   Else
      If C Like "#" And Len(NomValide) > 0 Then NomValide = NomValide & C
      Minus = False
      End If: Next P
End Function
Pour donner un nom à une plage le plus simple c'est de faire Plage.Name = LeNom avec Plage: une expression Range représentant la plage à nommer et LeNom: une expression String valant le nom à lui donner.
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Cela ne pouvait pas ce mettre a jour je n'avais pas créé de nom"BilanAtelier" ....

Le PB est que la plage des graphismes ne semble pas pouvoir être geré par un non
Voila mon dernier fichier test : Document Cjoint

Mais peut être ai je encore fait une erreur ???
 

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

À part la zone d'impression mal définie et les lignes à supprimer au delà de la 62 (actuellement) pour ne plus avoir leur quadrillage inutile, je ne vois rien d'anormal.
En produisant le bilan par Zone Géo, il serait possible de donner des noms aux différentes zones, et faire autant de graphiques que de zones. Ça ne conviendrait pas ?
Les noms de plages sont acceptés dans les graphiques.
Sinon c'est vrai qu'en filtrant ça va bien aussi.
Mais alors il serait prudent de mettre ça avant toute autre instruction :
VB:
If Me.FilterMode Then Me.ShowAllData
Voire demander par un MsgBox s'il faut continuer ou abandonner :
VB:
If Me.FilterMode Then
   If MsgBox("La liste est actuellement filtrée." & vbLf _
      & "Voulez vous continuer ?", vbYesNo, Me.Name) = vbNo Then Exit Sub
   Me.ShowAllData: End If

IMPORTANT. Je viens de trouver un bogue dans la procédure ValPlgAju (module Utilit).
J'ai provisoirement laissé en commentaires deux instructions foireuses et mis de meilleures juste en dessous :
VB:
'  If N1 Then Set Plg = Plg.Resize(, Plg.Columns.Count + Dif)
   If N1 Then Set Plg = Plg.Resize(, CMax)
VB:
'  If N1 Then Set Plg = Plg.Resize(Plg.Rows.Count + Dif)
   If N1 Then Set Plg = Plg.Resize(LMax)

Oui ça à l'air pas mal les filtres après tout.
Mis un bouton de Formulaire (et non ActiveX) sur la feuille avec le graphique, texte : "Nord - Est".
Affecté la petite macro FiltreRégion, écrite dans un module standard:
VB:
Sub FiltreRégion()
Dim Région As String
Région = Feuil5.Shapes(Application.Caller).TextFrame.Characters.Text
Stat6.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=Région
Feuil5.Shapes("ZoneTexte 5").TextFrame.Characters.Text = _
   "Nombre de DI et type géré par Atelier - Région " & Région
End Sub
Il ne reste qu'à mettre un bouton pour chaque région et lui affecter cette même macro.
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Salut Dranreb
Tu es un pro !

J'ai fait et testé tous ce que tu ma dis
Correctif => OK

L'intruction "Filtre" ne semble pas marcher, mais je ne l'ai peut etre pas mise au bonne endroit ?

Les boutons sur l'onglet graphique me conviennent parfaitement

Mon graph reste néanmoins tous pourri ...
Je l'ai re paramètrer plusieurs fois, mais a chaque c'est la même chose ???
Document Cjoint

Autre question qui n'a rien à voir
J'ai rajouté un onglet qui me permet de gérer une carte de France des interventions par département (détail)
Je trouve tellement bien ton mode de calcul par VBA pour les stats que j'aimerais faire pareil sur cet onglet

Mon problème est que ma liste de département est fixe (de 01 à 98), je ne veux pas la modifier
Je veux juste faire les calculs, j'ai tournée le code dans tous les sens je n'ai pas trouvé

Merci sylvain
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Bonjour
J'avais dit 'avant toute autre instruction'. Même Set PlgDon = etc.
Un seul des deux code est à appliquer, le deuxième ne fonctionnera jamais puisqu’après un ShowAllData la liste n'est plus filtrée.
Les boutons on l'air de bien marcher, non ? Qu'est ce qu'il a de pourri le graphique ? (à part, semble-t-il si on regarde la légende, une masse d'anciennes séries qui ne servent plus à rien et qu'il faudrait supprimer)

On peut tout à fait utiliser GroupOrg pour mettre à jour des données couleurs pour ce type de carte. S'il y avait simplement 95 numéros de départements qui se suivent sans trou, on pourrait ne plus utiliser un L incrémenté en sortie mais directement NumDépt.Id comme indice de ligne. Mais comme ce n'est pas le cas, il faudra se fabriquer un Dictionary des numéros de lignes par département à partir de la table des départements.
 

Jondsyl

XLDnaute Nouveau
bonjour Dranreb
Je vois que vous tes toujours très actif
je reviens vers vous sur un nouveau projet sur la même base de donnée qui depuis 2016 c'est considérablement enrichie

Mon tableau Excel et les stats liées doivent évoluer ...
Je me replonge dans le code VBA, dur dur et je n'arrive pas a referme marché le code
Pouvez m'aider, a me remettre a niveau SVP ?
peut être y a t'il une nouvelle version Excel depuis le temps celui-ci était déjà génial
Merci d'avance
Sylvain
 

Pièces jointes

  • Tableau DI Stat 2020 PerformanceSJ.xlsm
    813.6 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Bonjour.
Apparemment il manque le nom "Performance" pour que ça marche.
Par ailleurs il y a du ménage à faire dans les noms. Beaucoup de #REF!
Mais c'est vrai que ça s'est modernisé de mon coté depuis: le processus de classement est différent, le type d'objet des supports de l'info s'est simplifié en SsGr, et la fonction s'appelle comme les poupés russes: Gigogne.
Je le propose peu car beaucoup arrivent à sortir la même chose avec Power Query.
 

Jondsyl

XLDnaute Nouveau
Bonjour Dranred
Je ne vois pas justement ou l'info manque il y a un truc qui m'échappe
Je n'ai pas Power Query sur mon excel juste Power Pivot est ce la même chose ?
Moi je suis nul mais j'aime bien le VBA dans le fond ....

J'ai fais un peu de ménage dans mon fichier

Merci
Sylvain
 

Pièces jointes

  • Tableau DI Stat 2020 PerformanceSJ.xlsm
    813.7 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 767
dernier inscrit
LEONG