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

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Merci tu es un chef Dranred !
C'est exactement ce que voulais .... je gérais cela avec une multitude de feuilles caché
Je vais regarder ton dernier post de plus prêt

Ce matin en me réveillant j'ai mis en pratique notre travail d'hier avec + de donner
J'ai encore quelque petite erreur dans mon extraction de données que je vais gérer dans l'autre logiciel

Par contre je n'explique pas les trous dans nos filtres
Peux-tu m'inspirer ?
 

Pièces jointes

  • Test2.zip
    266.3 KB · Affichages: 30
  • Test2.zip
    266.3 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Bonjour.
Quels trous ?
On ne voulait pas de doublons dans les intervenants, c'est bien ça ?
On a donc fait exprès de ne pas le reproduire sur chaque ligne quand il y a plusieurs responsables différents !
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Bonjour Dranreb,
Donc si je comprends bien, chaque doublon (intervenant identique) avec pas le même responsable, nous ne répétons pas l’intervenant en mettant un blanc ?
Si c’est le cas, je dois corriger ma base ... Un intervenant est lié qu’a un seul responsable.
L’erreur est donc chez moi

Il y a des troue aussi dans la colonne d’a cté j’image donc que le PB est le même dans l’autre sens ?

Autre question :
Mon fichier Excel est vierge sur un serveur, il est appelé par le logiciel au moment de l’export des données (Access). Quand mon onglet "données" est vide je génère une erreur de code quand je me manipule mes onglets, peux-on inhibé cette erreur ?

Merci d'avance
sylvain
 

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Bonjour.
Essayez en déclarant PlgDon As Range … Set PlgDon = PlgUti(Feuil1.[A5]): If PlgDon Is Nothing Then Exit Sub
Et bien sur après Set Données = GroupOrg(PlgDon etc.

Lorsqu'il sera devenu absolument sûr qu'il ne peut y avoir qu'un responsable par intervenant il n'y aura plus besoin de For Each Resp In Interv.Contenu
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Non toujours l'erreur ...
Private Sub Worksheet_Activate()
Dim PlgDon As Range
Dim Données As Collection, T(), L&, Interv As SsGroup, Respon As SsGroup, Sect As SsGroup

Set PlgDon = PlgUti(Feuil1.[A5]): If PlgDon Is Nothing Then Exit Sub
Set Données = GroupOrg(PlgUti(Feuil7.[A5]), 19, 6, 4)
ReDim T(1 To 3000, 1 To 6)
For Each Interv In Données
T(L + 1, 1) = Interv.Id
For Each Respon In Interv.Contenu
L = L + 1
T(L, 2) = Respon.Id
For Each Sect In Respon.Contenu
T(L, 3) = Sect.Id
Next Sect
Next Respon
Next Interv
Me.[B16:D250].ClearContents
Me.[B16].Resize(L, 3).Value = T
End Sub

L'erreur est dans le module "Function GroupOrg"
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    46.1 KB · Affichages: 33

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Normalement PlgUti renvoi Nothing quand la plage est vide.

Et puis c'est idiot et source d'erreur de refaire ce PlgUti au GroupOrg: il n'y a qu'à lui passer PlgDon à la place, puisqu'il en contient déjà le résultat !
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Merci encore dranreb,
J ai tester les autres programme que tu m avais proposé
J en ai trouvé un correspondait exactement à ce que je voulais pour un autre module de mon fichier

Je rencontre un problème, mes données permettent de tracer des graphiques
J utilise un tri conditionnel (j ai pas encore trouvé un autre moyen pour tracer mes graphique comme je veux....)

Quand je manipule le fichier avec les tri conditionnel cela génère des problèmes sur vba
Il y a t il un moyen de faire exécuter le programme VBA qu' une seul fois ?
Il y a peut être un moyen en VBA de tracer des graphiques suivant un tri conditionnel (un graph par secteur par exemple?)

Merci d avance de tes réponses
Sylvain
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Le lien n'a pas l'air de marcher.
Il vaudrait mieux joindre ici un modèle avec moins de données.

Bon. j'ai quand même pu y accéder en analysant le lien (il semblait y avoir interversion entre le texte et l'adresse du lien)
La première chose qui me choque ce sont des tonnes de formules SOMMEPROD, au lieu d'avoir profité de la procédure pour calculer toutes ces valeurs…
De plus vous avez gardé des boucles imbriquées qui ne servent à rien puisque vous vous êtes bien arrangé pour qu'il n'y ai qu'un responsable et un secteur pour chaque atelier ! Le seule boucle interne qui aurait été intéressante c'est For Each Détail In Interv.Contenu pour effectuer les comptages dans les différentes colonnes.
Et vous persistez à isoler inutilement une deuxième fois la plage de données à considérer ! Ce que je vous dit ne sert à rien quoi.
Vous avez juste besoin d'un For Each Interv In GroupOrg(PlgDon, 19) c'est tout.

Quelque chose comme ça, quoi :
VB:
Private Sub Worksheet_Activate()
Dim PlgDon As Range, T(), L&, Interv As SsGroup, Détail
Set PlgDon = PlgUti(Feuil7.[A5]): If PlgDon Is Nothing Then Exit Sub
ReDim T(1 To 233, 1 To 35)
For Each Interv In GroupOrg(PlgDon, 19)
   L = L + 1
   T(L, 1) = L: T(L, 2) = Interv.Id
   Détail = Interv.Contenu(1)
   T(L, 3) = Détail(6): T(L, 4) = Détail(4)
   For Each Détail In Interv.Contenu
      If Détail(8) = "DI-SAV" Then T(L, 6) = T(L, 6) + 1
      '  etc.
      ' …
      Next Détail, Interv
Me.[A18:AI250].ClearContents
Me.[A18].Resize(L, 35).Value = T
End Sub

Pour une meilleure connexion avec le graphique, peut être pourrait il être intéressant de mettre le résultat sous forme de tableau Excel, je ne sais pas. Ou au moins de lui donner un nom dans le classeur. Il y a dans Utilit une procédure ValPlgAju qui s'accommoderait très bien d'une plage nommée, et serait capable de l'agrandir ou de la raccourcir en fonction du tableau VBA qu'on lui affecterait. Mais il n'y en aurait plus besoin avec un tableau Excel si c'est plus pratique. On verra ça après.
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

Ok cela me convient, j'ai déjà utilisé ailleur dans mon tableau cette function
je veux bien remplir le tableau en VBA

Je cherche a comprendre :
If Détail(8) = "DI-SAV" Then T(L, 6) = T(L, 6) + 1

Détail(8) = je regarde dans les données, colonne 8 tout ce qui est égale à "DI-SAV"
C'est compter, la somme des lignes égale à DI-SAV est inscrit dans l'onglet bilan atelier colonne 6

Si je dois faire des calculs de plusieurs condition, genre DI-SAV + Groupe 3 (Détail(17)
Comment cela ce passe t-il ? je pense comme cela ...
If Détail(8) = "DI-MES" And Détail(17) = "3" Then T(L, 8) = T(L, 8) + 1

Il n'y a pas de End IF avec la function IF ?

Et quand j'ai plusieur critére dans une meme colonne de données ?
If Détail(8) = "DI-SAV" And "DI-MES" Then T(L, 5) = T(L, 5) + 1
Mais ca cela ne marche pas ...
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Extraction de données pour statistique

Bonjour
Vous comprenez bien jusqu'au deux dernières questions.
If est une instruction, non une Function. Elle possède deux formes: avec ou sans 1ère instruction directement à la suite du Then sur la même ligne. Si pour un code plus court on ne veut pas être obligé de mettre des End If tout le temps on peut mettre les instructions à la suite du Then séparées de ": ". Mais si c'est plus simple faites des blocs If avec des ElseIf … ElseIf … Else … End If
Pour éviter de tester plusieurs fois If Détail(8) = "DI-MES" par exemple.
Il y a aussi le Select Case Détail(8): Case "DI-MES": instructions: Case "etc. … Case Else: … End Select

Non, une cellule n'a qu'une seule valeur.
Il ne peut donc y avoir, dans une seule ligne de détail, qu'une seule valeur à sa colonne 8.
 
Dernière édition:

Jondsyl

XLDnaute Nouveau
Re : Extraction de données pour statistique

OK pour l'instruction IF

Dans la colonne 5, je dois avoir la somme des dossiers "DI-MES" ET "DI-SAV" par atelier
Dans la colonne 7, je dois avoir la somme des dossiers "DI-MES" ET "1" ET "2" ET "4" par Atelier (1,2,4 = Données colonne 17)

Si j'ai bien compris, les calculs sont pas possible ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 453
Messages
2 088 550
Membres
103 881
dernier inscrit
malbousquet