VBA Excel occurence de valeurs dans un tableau

Aimedija

XLDnaute Nouveau
Bonjour,

Dans le cadre de réparation sur des voitures, j'ai un workbook avec de multiples feuilles et chacune à un tableau qui se présente comme suit mais dont le nombre de lignes peux varier.

Pour l'exemple Feuil1 & Feuil2:

Colonne A : le type de véhicules ( peux être répété plusieurs fois)
Colonne B : le numéro de série ( numéro unique)
De la colonne C à la colonne V : le type de réparations ( de 1 à 20)
(Voir fichier joint)
j'essaye en vain de d'automatiser la question suivante ; par type de véhicules (Colonne A) , quelles sont les réparations les plus fréquentes ( top 5 décroissant) ?

Résultat attendue :
Type de véhicule "A" = Reparations 10 , 18, 12, 8, 14

Ayant déjà consulter les fonctions excel NB.Si & NB.SI.ENS, je ne parviens pas à automatiser (VBA) ses opérations sur plusieurs feuilles avec un nombre élevé de lignes.

Auriez-vous une suggestion? Merci d'avance
 

Pièces jointes

  • exemple réparation de vehicules.xlsm
    422.1 KB · Affichages: 35

Aimedija

XLDnaute Nouveau
Bonjour Jean-Marie,

merci pour ton deuxiéme retour, J'ai pris le temps de comprendre comment tu avais mis en place l'exemple du post #28.

Pourrais tu m'aider sur celui ci? Lors de l'ouverture j'ai un message d'erreur de type Execution 13 sur la macro
Code:
Private Sub CmdB_GESTION_Click()
UsF_GESTION.Show 0
End Sub

Merci d'avance,
 

ChTi160

XLDnaute Barbatruc
Re
perso je n'ai pas de message d'erreur (je viens de télécharger le Fichier )
il te faut dérouler la procédure a l'aide du Bouton F8 tu te places sur la Ligne jaune et tu fait F8 pour faire avancer la procédure tu pourras ainsi voir ce qui pose problème .
j'attends ton retour;
j'ai modifie le fichier regarde si tu as toujours le message d'erreur !
Bonne fin de journée
jean amrie
 

Pièces jointes

  • exemple réparation de vehicules Chti160-4-4.xlsm
    1.8 MB · Affichages: 29
Dernière édition:

Aimedija

XLDnaute Nouveau
Bonjour Jean-Marie,

le message d'erreur : Erreur d'execution 13 - Incompatibilité de type suirvient lorsque j'appuie sur le bouton Gestion et me renvois vers le formulaire.

J'essaye à présent redéfinir ton rapport par rapport à mes besoins, mais je n'arrive pas à passer de 20 colonnes à 57. De plus, les informations contenues en A1:V1 se retrouve en A6:BH6 pourrais tu me guider?

Merci et bien à toi,
 

Pièces jointes

  • upload_2018-8-7_17-1-26.png
    upload_2018-8-7_17-1-26.png
    146.2 KB · Affichages: 38
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
tu dis :
J'essaye à présent redéfinir ton rapport par rapport à mes besoins, mais je n'arrive pas à passer de 20 colonnes à 57. De plus, les informations contenues en A1:V1 se retrouve en A6:BH6 pourrais tu me guider?
je ne comprends pas ce que tu veux dire , je n'ai pas fait de rapport ?????
voilà ce que j'obtiens lorsque j'appuie sur le Bouton Gestion(voir image jointe)
dans l'attente de tes explications .
jean marie
 

Pièces jointes

  • Bouton Gestion.jpg
    Bouton Gestion.jpg
    152.7 KB · Affichages: 35

Aimedija

XLDnaute Nouveau
Bonjour Jean-Marie,

Merci pour ses précieuses information, j'ai réussi à ouvrir correctement le fichier proposé au post#33.

Désolée pour ce retour tardif, j'ai du prendre le temps de comprendre puis J'ai essayé de modifier le code proposé pour mieux cerné mon probléme sans succés.

Mon besoin à totalement changer comme suit ;

1. Au lieu de 20 colonnes renseignant sur les réparations, j'en ai 61 + une colonne renseignant sur les dates de ses réparations (qui n'est pas à prendre en consideration).
2. En lieu et place de plusieurs feuille, j'ai maintenant une exportation de la base de données présente sur Access sur une feuille unique.
> Fichier d'exemple ci-joint.

Mon but est toujours de pouvoir calculer par types de véhicules , par numéro de série et par types de réparation les occurences (Fréquences) ainsi que leur coûts généraux. Pour ce faire j'essaye d'adapter la formule ci dessous :

Code:
Sub FrequencyKPI2()
tablo = Sheets("Feuil1").Range("A2:L" & Sheets("Feuil1").Range("A" & rows.count).End(xlUp).Row)
Set Dico = CreateObject("Scripting.dictionary")
For n = LBound(tablo, 1) To UBound(tablo, 1)
  X = tablo(n, 3) & "|" & tablo(n, 5) & "|" & tablo(n, 7)
  Dico(X) = Dico(X) + 1
Next
a = Dico.keys
b = Dico.items
ligne = 2
Sheets("Feuil1").Cells.ClearContents
Sheets("Feuil1").Cells(1, 1) = "Types de véhicules"
Sheets("Feuil1").Cells(1, 2) = "N° série"
Sheets("Feuil1").Cells(1, 3) = "Types réparations"
Sheets("Feuil1").Cells(1, 4) = "Coûts"
Sheets("Feuil1").Cells(1, 5) = "Frequency"
For n = LBound(a) To UBound(a)
Sheets("Feuil1").Cells(ligne, 1) = Split(a(n), "|")(0)
Sheets("Feuil1").Cells(ligne, 2) = Split(a(n), "|")(1)
Sheets("Feuil1").Cells(ligne, 3) = Split(a(n), "|")(2)
Sheets("Feuil1").Cells(ligne, 4) = Split(a(n), "|")(3)
Sheets("Feuil1").Cells(ligne, 5) = b(n)
ligne = ligne + 1
Next
Sheets("Feuil2").Select
End Sub

Pourrais-tu m'aiguiller sur le cheminement de ton developpement car je n'arrive pas du tout à l'adapter à ce nouveau besoin?
Merci d'avance et bien à toi
 

Pièces jointes

  • Exemple Réparation de vehicules 2.xlsm
    160.5 KB · Affichages: 27

ChTi160

XLDnaute Barbatruc
Bonjour Aimedija
je viens de modifier la programmation du fichier que tu as joint
ce qui fait que le traitement des 66 colonnes (dont 61 de types de Réparations)
Aucune Cellule Vide dans ces colonnes (ou très peu)!
Ce qui fait un peu plus de 37020 réparations a traiter pour 616 lignes prises en compte dans la feuille Source (Vehicules DataBase).
et un retour de 1280 éléments dans le Classement .
Donc le temps d’exécution est beaucoup plus important. (sois patient !)
je vais te joins ce fichier d'ici peu! lol
Bonne journée
Amicalement
jeanmarie
 

ChTi160

XLDnaute Barbatruc
Bonjour Aimedija
Le Fil , le Forum
Un fichier exemple de ce que j'ai pu faire Lol
Si tu as des idées pour accélérer le traitement !
Bonne journée
jean marie
 

Pièces jointes

  • Exemple Réparation de vehicules 2 Chti160.xlsm
    154 KB · Affichages: 24

Aimedija

XLDnaute Nouveau
Bonjour Jean-Marie,

Encore un grand merci car ton fichier reprend bien les éléments clés.

J'aimerais savoir comment puis je retirer la notion de temps dans le calcul des réparations par types de véhicules et numéro de série? L'idée serais de calculer la somme des réparations peu importe le moment dans le temps.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
315 106
Messages
2 116 268
Membres
112 706
dernier inscrit
Pierre_98