Top 10 sur un tableau multi colonnes

sbindi

XLDnaute Nouveau
Bonjour,

Je doit construire un Top 10 sur des réparations a partir d'un tableau multi colonnes.
J'ai fait des tests en tableau croisé dynamique, mais soit je ne voit pas, soit je ne sais plus faire, mais je n'arrive pas à mes fins.

Il y a 10 colonnes contenant des réparations. Soit il y a quelque chose dans la colonne soit elle est vide.

Je doit donc comptabiliser la réparation et compter combien de fois elle apparaît, mais dans toutes les 10 colonnes.

Je joint un fichier exemple, ce fichier est extrait d'une application tablette, et des colonnes sont rajoutées via macro VBA.

Si quelqu'un a une petite idée pour m'orienter.

Merci
 

Pièces jointes

  • classeur test.xlsx
    15.9 KB · Affichages: 46
  • classeur test.xlsx
    15.9 KB · Affichages: 49

Nairolf

XLDnaute Accro
Re : Top 10 sur un tableau multi colonnes

Salut,

Tel qu'est construit le tableau, à mon avis, les moyens les plus simples sont (dans l'ordre inverse d'intérêt):
- le moins bien:
Faire un traitement vba sur les colonnes concernées pour les regrouper en une seule colonne, depuis laquelle tu pourras faire une analyse facilement

- L'entre-deux:
Avoir la liste des interventions types et faire un "=NB.SI()" pour chaque colonne en fonction de cette liste.

- Le mieux:
Lors du 1er traitement vba récupérer les données différemment : une ligne dans le tableau par intervention => sera plus simple pour tous les traitements imaginables (par le biais de tris, filtres, TCD...).
 

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Bonjour,

Merci pour ta réponse.
Concernant le 1er traitement VBA.
Je t'explique un peu le fonctionnement.
Les utilisateurs saisissent sur une tablette a l'aide d'un outil : arioflow pour ne pas le nommer. Une syncho est ensuite faites sur leurs serveurs via 3G ou wifi.
Je peut ensuite récupérer un fichier .csv des données brutes : 20151015020450.csv renommé en xlsx pour le forum.

L'utilisateur final va ensuite copier/coller les données présentent dans ce fichier pour les rajouter dans un fichier annuel en bout de tableau. Le tableau va donc grossir au fil de l'année.

Je fait ensuite un traitement afin de rajouter les colonnes numéro de semaine et numéro du mois.
Plus un 2ème traitement afin de rajouter les colonnes pour les 10 réparations possibles (4 colonnes à chaque fois) afin de récupérer dans une autre liste le numéro de l'OU concernée, le prix, etc etc

C'est une liste avec 250 lignes actuellement.

Dans tes solutions la 3ème je ne vois pas trop comment l'implanter.
La 2 est possible , mais il va y avoir un soucis ensuite pour conserver un historique de date. Des reportings hebdo,mensuels et annuels sont à éditer.
La 1 pareil, je ne voit pas trop.

Merci en tout cas pour ta réponse.
 

Pièces jointes

  • 20151015020450.xlsx
    4.6 KB · Affichages: 37

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Bonjour,

Merci Nairolf,
J'ai regardé ton fichier, le soucis est la pérennisation du fichier. Il va falloir ajouter à chaque fois un bout dans la formule pour chaque nouveau mois.

Je vais plus m'orienter sur ta solution que tu défini comme étant la mieux, lors du traitement VBA, créer une ligne par réparation.

Mon soucis est que débutant un peu dans le vba, je sait faire des choses mais là, je bug bug bug :)

Chariot 1 : 3 réparations sur 10 possibles
Chariot 2 : 4 réparations sur 10
Chariot 3 : 1 réparation sur 10

Le macro doit donc tester si la cellule à coté est vide ou non et si pas vide copier la donnée, si vide passer à la ligne du dessous.
Et là, c'est le drame, je ne voit pas comment faire.

Une piste ?

Merci
 

Nairolf

XLDnaute Accro
Re : Top 10 sur un tableau multi colonnes

Salut,

Je n'avais pas regardé ton fichier brut, sa structure n'est, en fait, pas très intéressante pour le traitement recherché (je m'attendais à une structure de type base de données), la solution se rapprochera donc de la solution du point 1.

Peux-tu poster ton fichier avec ton code vba afin que je regarde comment intégrer, lors de l'opération d'import, la création d'une ligne par réparation ?
 

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Hello,

Merci pour ta réponse.

Le soucis avec l'intégrateur de la solution sur les tablette est qu'il ne veut pas me modifier l'export en csv sous prétexte que cela fait partie du lot que nous avons refusé pour la création des rapports.

Du coup au lieu d'une présentation en ligne, je me retrouve avec une présentation en colonne...
 
Dernière modification par un modérateur:

Nairolf

XLDnaute Accro
Re : Top 10 sur un tableau multi colonnes

Salut,

Bon, tout d'abord ton code est un peu lourd.
Par exemple, pour les 10 réparations, tu as plus de 400 lignes de code alors que je pense que j'y arriverais avec une vingtaine (certains bien meilleurs que moi arriveraient même à faire ça en quelques lignes). De plus, on évite d'enchainer les boucles identiques les unes à la suite des autres et on regroupe au maximum les traitements possible par boucle car le traitement sera moins long (en dixièmes de seconde je te l'accorde, mais 10 x 0,1s = 1s), sinon tu peux vite augmenter les temps correspondants.

Je ne te dis pas ça pour critiquer, mais si ton code est "léger", il est plus facile à modifier, agrémenter. Ce n'est pas toujours simple, mais

Je regarde ce que je peux te proposer et reviens vers toi dès que je peux.
 

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Hello,

:p Je suis pas une bête de course en programmation VBA. Je me doute que c'est pas optimisé. Pas du tout même, mon truc à moi c'est le code orienté pour le net.

Bref je suis preneur de toute idée pour améliorer la bête.

Merci à toi
 

Nairolf

XLDnaute Accro
Re : Top 10 sur un tableau multi colonnes

Re,

J'ai travaillé pour simplifier ton code selon l'usage que j'en ai compris.
Tu trouveras, ci-joint, 2 fichiers différents (avec timer pour voir l'impact du code sur le temps d'exécution), le premier est un traitement cellule par cellule qui permet de rajouter des données brutes à la suite de données traitées, et le second est un traitement par plage (beaucoup plus court) mais nécessiterais le passage par une feuille temporaire si nous voulons mettre de nouvelles données au fur et à mesure.

Je vais continuer à travailler sur ton code pour le mettre en lignes et faire un traitement directement du fichier csv. Le traitement sera différent, car il faudra recopier des données.
 

Pièces jointes

  • top-10-sur-un-tableau-multi-colonnes-moyens-roulants_Nairolf V1.xlsm
    107 KB · Affichages: 20
  • top-10-sur-un-tableau-multi-colonnes-moyens-roulants_Nairolf V2.xlsm
    107.1 KB · Affichages: 23

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Hello Nairolf,

Tu va être mon idole excel à force.

Alors pour répondre à ta question, le numéro de semaine et du mois n'est pas présent dans le csv de départ.
Je le créé juste pour le reporting.

Le soucis ou je coince dans l'immédiat c'est la partie TBCD, ou avec la présence des colonnes, ca bloque.

Mais en tout cas bravo pour l'optimisation, c'est sur que c'est plus rapide que mon code, là est la différence entre quelqu'un qui connait le vba et un débutant ^^

Merci en tout cas déjà
 

Nairolf

XLDnaute Accro
Re : Top 10 sur un tableau multi colonnes

Salut,

Tu trouveras, ci-joint, une version correspondant à ton besoin initial.
Le code n'est pas complètement optimisé, mais ça marche bien.
 

Pièces jointes

  • top-10-sur-un-tableau-multi-colonnes-moyens-roulants_Nairolf V3.xlsm
    114.7 KB · Affichages: 28

sbindi

XLDnaute Nouveau
Re : Top 10 sur un tableau multi colonnes

Salut,

Tu trouveras, ci-joint, une version correspondant à ton besoin initial.
Le code n'est pas complètement optimisé, mais ça marche bien.

Merci pour ton fichier.
J'attends une MAJ de la plateforme de test ariowflow ainsi que des nouvelles données en CSV afin de tester si le comportement du fichier est cohérent.
En regardant comme cela, j'ai juste détecté une modification par rapport au comportement de ma version qui était pas terrible c'est vrai ^^

Dans le reporting hebdo, le cumul se fait avec des doublons maintenant que les données sont en lignes et non en colonne. Si tu connait une fonction qui permet de faire le tri pour éviter cela ?

Mais en tout cas le fichier est bien plus sympa que le miens...
 

Discussions similaires

Statistiques des forums

Discussions
312 296
Messages
2 086 967
Membres
103 411
dernier inscrit
jamjam6767