tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

cathodique

XLDnaute Barbatruc
Bonjour,

Après maintes consultations de discussion, je ne suis pas parvenu à trouver une solution.

Je sollicite vos compétences pour y parvenir. Voilà, j'ai monté le fichier joint en le simplifiant considérablement.

Je voudrai faire une macro afin de faire un tableau récapitulatif à partir d'une BD (feuille "BD"),

sur cette feuille il y a 3 colonnes renseignées (A,B et C) en A il y a des intitulés en doublon et en C des valeurs.

La macro devra récupérer les intitulées sans doublons, les transférer sur la feuille txbord à partir de A2.

Puis dans les colonnes adjacentes, récupérer la moyenne de la colonne C pour le même intitulé,

ensuite le nombre de valeurs col C (NbVal "C") et la suivante Nb.Si col C (NB.BI "C").

J'ai commencé (sur mon fichier original) à le faire en utilisant les auto-filtres mais sans y parvenir.

Je sais que certain maitrise parfaitement les "Array". Est-ce possible de traiter ce problème avec les tableaux?

En vous remerciant beaucoup.

Cordialement,
 

Pièces jointes

  • Calcul lignes filtrées.xls
    52.5 KB · Affichages: 62
  • Calcul lignes filtrées.xls
    52.5 KB · Affichages: 57
  • Calcul lignes filtrées.xls
    52.5 KB · Affichages: 59

Misange

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour

Un TCD ne ferait pas l'affaire ? C'est quand même plus simple et plus rapide qu'une macro (et dynamique).
Ca te génère tout seul la liste de tes valeurs uniques avec les moyennes à côté.
dans ce cas, une colonne (masquée éventuellement) pour tester ta condition <-600 serait utile.
 

Dranreb

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour.
C'est normal que je n'obtiennent pas du tout les mêmes chiffres que dans votre encadré, même en ignorant les lignes où VAL9 est vide ?
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour Misange,

Je te remercie pour ta réponse, mais un TCD ne fera pas l'affaire. Je dois insérer ce code dans la macro de mon fichier original.

Merci beaucoup.

Cordialement,
 

Misange

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Coucou Chris et Bernard
Je ne comprends pas pour ma part pourquoi "il faut intégrer ce code dans la macro de mon fichier original".
Tu as une bdd. Que tu génères ton tableau avec "ta macro originale" ou que "ta macro originale" fasse X étapes et que la dernière soit faite par excel dans un TCD (tu peux ajouter dans "ta macro originale" une ligne de code qui actualise le TCD), ne change rien, sauf à accélérer les opérations et à les simplifier.


Je comprends qu'on aille poser une question sur le forum A quand sur le forum B personne n'a proposé de réponse adéquate mais qu'on pose la même question en même temps sur 2 forums... Et quand dans les deux on te dit que ton approche n'est pas idéale...
 

cathodique

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour Dranreb,

C'est super, mais je t'avoue que je n'ai rien compris à ton code. Aurais-tu l'amabilité de le commenter?

ça ne va pas être simple pour moi d'adapter ton code sur mon fichier original, d'autant plus que j'ai déjà entamé une bonne partie en utilisant des autofiltres. Ta solution me plait énormément.

Je te remercie beaucoup.

Cordialement,
 

Dranreb

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Il y a déjà des commentaires explicatifs de mode d'emploi dans tous les modules de services. Mais ça ne mange pas de pain d'ajouter ceux-ci :
VB:
Private Sub Worksheet_Activate()
Dim Ts(1 To 50, 1 To 4) As Variant, VAL5 As SsGroup, S As Double, Nb As Long, NbInfÉgm600 As Long, _
   Détail As Variant, Ls As Long
For Each VAL5 In GroupOrg(PlgUti(Feuil1.[A2]), 1) ' Pour chaque sous-groupe basé sur la colonne 1
   S = 0: Nb = 0: NbInfÉgm600 = 0 ' RAZ
   For Each Détail In VAL5.Contenu ' Pour chaque ligne de détail du sous-groupe
      If Not IsEmpty(Détail(3)) Then ' Si valeur non vide colonne 3 :
         S = S + Détail(3) ' Cumul
         Nb = Nb + 1 ' Comptage
         If Détail(3) <= -600 Then NbInfÉgm600 = NbInfÉgm600 + 1 ' Comptage des <= -600
         End If: Next Détail ' Détail suivant
   Ls = Ls + 1 ' Incrément n° de ligne de sortie
   Ts(Ls, 1) = VAL5.Id ' Id colonne 1
   Ts(Ls, 2) = Int(S / Nb + 0.5) ' Arrondi moyenne
   Ts(Ls, 3) = Nb ' Nombre des renseignés
   Ts(Ls, 4) = NbInfÉgm600 ' Nombre des <= -600
   Next VAL5 ' Sous-groupe suivant
Me.Rows(2).Resize(50).ClearContents ' Affacement 50 lignes
Me.[A2].Resize(Ls, 4).Value = Ts ' Versement contenu tableau dans valeurs plage.
End Sub
 

cathodique

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Messieurs,

Je suis à la recherche d'une solution. Quelques fois, on ne vous répond que si vous avez posé une seul question, d'autres fois on vous dit:"oui mais il fallait poser tout le problème pas en partie.

Donc, je ne suis pas passif, j'effectue des recherches sur le net, pose des questions sur différents forums et visites énormément de pages web.

Je me souviens que des formeurs m'avaient dit la même chose que vous (mauvaise piste) et il s'est avéré que sur developpez.net, un expert senior confirmé à qui je serai toujours reconnaissant, avait bien compris mon problème et m'a sorti un code du "TONNERRE". J'avoue que je n'ai pas compris son code à ce jour. il était trop compliqué pour ma petite cervelle. je me souviens qu'il m'avait demandé d'activer la bibliothèque "runtime scripting". j'ai juste compris qu'il utilisait des tableaux successifs.

Oui je bien du tonnerre, récupérer des données d'une bdd et les transférer sur différentes feuilles dont la disposition était différente. Comme ne pas être admiratif, surtout que le problème n'avait pas été simple à exposer.

En effet, j'ai tiré ma révérence à ce Monsieur. Pour c'est un Top-Chef.

Mais ce que je ne comprends aujourd'hui, c'est qu'en quelque sorte on me reproche de poser le même problème sur des forums différents. Est-ce interdit?

Je trouve l'approche de Dranreb séduisante, mais que je n'ai pas compris donc je ne pourrai pas aller plus loin sur mon fichier original (ce dernier contient des données confidentielles).

Un dernier mot "Merci".

Cordialement,
 

cathodique

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour Dranreb,

Je te remercie pour ton aide. Ainsi que pour les commentaires que tu viens de rajouter.

Merci, j'espère comprendre ton code et parvenir à l'exploiter.

1000 mercis. Bonne journée.

Cordialement,
 

Dranreb

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Ces modules ne requièrent pas la biliothèque Scripting car ils n'utilisent pas de Dictionary.
Qu'est-ce que vous n'avez pas compris ?
Voici quelque infos sur les 4 modules de services employés :
Les modules de classe :
— SsGroup définit le type de donnée SsGroup. Il est microscopique et très simple: juste deux propriétés: Id et Contenu, c'est tout.
— TableIndex définit un objet servant au classement de numéros d’éléments selon les valeurs de ces éléments.
Les modules ordinaires :
— MClassements contient la fonction GroupOrg qui renvoie une collection organisée d'objets de type SsGroup
— Utilit contient entre autre la fonction PlgUti qui permet de cerner facilement une plage étendue à partir d'un cellule de départ spécifiée et rend l'objet Range correspondant.
Tous ces modules de services sont en principe exhaustivement commentés de toutes explications nécessaires à pouvoir s'en servir. S'il y a quelque chose que vous n'y comprenez pas, dites le, ça servira à les améliorer.

P.S. J'ai commencé à rédiger tout ça bien avant d'avoir pu voir le dernier message, auquel ça ne répond donc pas. Ce ne sera en outre d'ailleurs peut être quand même pas inutile.
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

Bonjour Dranreb,

Je te remercie pour ta gentillesse. Dans mon post#10, j'ai cité la bibliothèque Runtime scripting pour répondre à Chris qui m'a reproché d'avoir posé des questions sur des forums différents concernant le même problème.

J'ai bien vu que dans ton code il n'y avait pas de dictionnaire. Encore merci, tu m'as été d'une grande aide. je prends le temps de bien comprendre ton code et tenter de l'adapter pour les besoins de mon fichier original.

Cordialement,
 

laetitia90

XLDnaute Barbatruc
Re : tableau récap (moyenne, nbval, nbsi) avec autofiltre ou array

bonjour tous :):):):)
une facon de l'ecrire avec 3 dico pas optimise surement en supprimer au moins 1 mais bon !!!!:(

pas le temps si cela peut aider
 

Pièces jointes

  • Calcul lignes filtrées.xls
    54.5 KB · Affichages: 55
  • Calcul lignes filtrées.xls
    54.5 KB · Affichages: 58
  • Calcul lignes filtrées.xls
    54.5 KB · Affichages: 48

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal