Calculer les pannes d'une machine sans doublons

Bonjour le forum,

J'ai un très gros problème depuis 3 semaine que je n'arrive pas à résoudre. Hélas sur internet aucun post ne traite ce sujet…

J'ai des machines avec leurs dates de début et dates de fin de panne. Les machine fonctionne 5j/7.

Je doit calculer le nombre de panne en jour sur chaque mois de l'année. J'ai réaliser une macro qui créer un nouveau tableau dans la première feuille pour avoir la liste des nombres de panne par mois et par ref machine, puis importer le total des pannes en fonction du mois et de la ref machine. Jusqu'ici tout va bien...

Seulement voila, une machine peut connaître des surpannes, c'est à dire des pannes qui succède une autre panne. Donc lorsque je fait mon calcul il est erroné, vous pouvez constater que pour la machine AA-500 il a connu 3 surpanne, et les panne en juin sont supérieur au nombre de jour ouvrés en juin (ce qui est impossible).

Pour mieux comprendre ma demande, veuillez lancer la macro puis lire la feuille "Explication". Je ne souhaite pas garder les doublons d'une date de panne.

La solution doit se faire idéalement en VBA, mais si une formule existe, je suis preneur !

J'espère avoir une réponse favorable à ma demande.

59surpanne2.xlsm (96.47 Ko)

Bonjour

Une proposition ProwerQuery, intégré à Excel, qui calcule le nombre de jours de pannes par machine et mois, chaque jour n'étant compté qu'une fois

31surpanne2-pq.xlsm (105.07 Ko)

Bonjour 78chris

J'ai déjà trouvé une réponse via powerquery, voir le fichier ci dessous.

Le fichier fonctionne sans problème, mais avec PQ je pense que sa va être compliqué car de base je doit importer des feuilles d'un classeur pour récupérer les données machine (ref, début et fin panne) et calculer le nombre de panne.

C'est pour cela que je souhaite via formule ou via PQ. Peut-on créer un code vba pour programmer mon code PQ ?

Cordialement

bonjour,

une solution en VBA avec un TCD.

27surpanne2.xlsm (205.33 Ko)

RE

Le fichier fonctionne sans problème, mais avec PQ je pense que sa va être compliqué car de base je doit importer des feuilles d'un classeur pour récupérer les données machine (ref, début et fin panne)

Justement une requête PQ peut s'appliquer à un fichier externe : exemple en reprenant ton classeur mais en externalisant les données de pannes

Modifier la cellule en jaune et actualiser

Je remarque que d'un exemple à l'autre les titres de colonnes évoluent donc à vérifier... Traite le 1er onglet du classeur indiqué dons à adapter si ce ne 'est pas le cas

31pannes.xlsx (11.26 Ko)
29pannes2-pq.xlsx (17.78 Ko)

EDIT : en relisant le fil d'où vient le classeur, je vois que tu es focalisé sur VBA (que de plus en plus de monde abandonne au profit de PQ) donc j'ai sans doute perdu mon temps...

EDIT : erreur

RE,

BAlv merci pour ton aide, la formule n'est pas completement correct, tu constate bien que pour AA-786 le nombre de panne est de 46, ce qui est impossible car cela doit être < à 31 jours... Je t'invite à consulter la feuille "explication" pour mieux t'éclairer ;) C'est presque bon !

Aussi inutile de rajouter une feuille TCD, tu peut directement afficher seulement le tableau dans la feuille "calcul".

78chris honnêtement je m'y connais pas du tout en PQ, et cela à l'air de bien définir mon besoin car cela fonctionne très bien par cette manière. Je vais essayer de m'y mettre. Et contrairement à ce que tu crois tu n'a pas perdu du temps, il me faut un peu de temps avant de bien comprendre la fonction PQ.

en effect ce devait être

dict(j & "|" & a(i, 1)) = Array(j, a(i, 1))

je ne comprends pas le question concernant la feuille "calcul", le résultat ne peut pas être un TCD ?

Donc éliminer la feuille "Calcul" et renommer "TCD" par "calcul" ?

J'ai mit à jour ta formule comme tu me l'a demandé, sa à l'air de fonctionner. J'ai fait une vérification manuelle, tout est parfait ! Vraiment merci pour tout !!!!

Seulement il y a deux condition qu'il faut mettre à jour :

  • Si par exemple la panne à durée du 01/01/2022 au 01/01/2022, compter 1 jour de panne. (donc remettre tout à jour).
  • Aussi je souhaite afficher des cellules vide si mois_en_cours < mois_selcetionner (voir capture).
  • Afficher 0 si aucune panne dans mois_selectionner et si mois_en_cours < mois_selectionner (voir capture).

Concernant ta question voici ce que j'attend :

image

Merci de m'envoyer le fichier avec toute ces correction ;)

J'ai oublier peux-tu ajouter des commentaire a chaque ligne dans ton code, je suis débutant en VBA cela me permet de m'y retrouver et d'apprendre plus vite ;)

Très bon week-end à vous !

RE

78chris honnêtement je m'y connais pas du tout en PQ, et cela à l'air de bien définir mon besoin car cela fonctionne très bien par cette manière.

... je suis débutant en VBA cela me permet de m'y retrouver et d'apprendre plus vite

Tu débutes dans les 2. Il est plus simple d'apprendre PQ que VBA...

J'ai déjà commencer avec VBA, j'essaye de finir mon classeur en VBA, puis je me jetterais dans PQ.

Il serait plus simple que j'envoi le fichier d'origine avec modification des données (fichier confidentiel) pour PQ.

Passe un très bon WE :)

Floki

bonjour, j'éspère que cela te conviens

40surpanne2.xlsm (179.89 Ko)

MERCI !!!

Rechercher des sujets similaires à "calculer pannes machine doublons"