VBA Excel occurence de valeurs dans un tableau

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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,
 
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

Dernière édition:
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:
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
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

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour