Extraction de données - Tri de tableaux

Bonjour à tous,

Je génère un fichier excel grâce à un logiciel de supervision de machines, dans ce fichier je retrouve des numéros d'enrouleurs (colonnes), le temps (date/heure) par ligne et les états correspondants des enrouleurs en fonction du temps. Ces états peuvent prendre les valeurs 1,2,3,4,5 ou 6. Je souhaiterais extraire seulement les valeurs 3 et 6, pour cela il serait appréciable d'ouvrir une nouvelle page excel avec un nouveau tableau généré (par exemple) qui me dirait par exemple : l'enrouleur 7 à eu un état 3 de 10h21 à 11h35.

(voir fichier joint)

Si nécessaire je pourrais vous envoyer le fichier excel car trop volumineux pour le forum.

Voila voila, et tout ceci de façon automatique.

J'espère que quelqu’un pourra me débloquer là-dessus !

Merci d'avance

screen mise en forme

bonjour

il FAUT joindre un fichier

si besoin, tu le raccourcis ou tu crées un fichier exemple

Voilà j'ai raccourci le fichier

11etat-voyants-008.xlsx (387.08 Ko)

bonjour,

Colorer en jaune (sur une seule ligne) les données critiques à transférer...

Comme YAKE des 3 partout YFO tout transférer ?

Mettre en Feuille2 une ébauche du résultat souhaité. (En têtes + 1 ligne témoin)

A+

J'ai rajouté sur une deuxième page ce que je souhaiterais. En gros, il faut compter combien il y a de période de 3 et de 6 qui se suivent pour en déduire une période et ainsi de suite

13etat-voyants-008.xlsx (388.06 Ko)

Pfff... Ben mon coco

Je me sens un petit peu faible, d'un coup !

Mais je pense que mes amis vont me booster un peu les neurones...

Il va falloir patienter un peu je crois !

A+

Bonjour,

On ne peut pas vérifier tes exemples !

Est-ce que le 12/07/2017 à 10:45:00 l'état de ENR1 est 3 ? Ou est-il passé à un autre état ?

Cordialement.

Ménon son exemple est pourri... Tu as les méninges au ralenti toi aussi ?

ENR1 il n'y a que des zéro

Je te donne le résultat pour la colonne C (ENR10)

A+

extract

Pas du tout ! Je demandais juste sur ton premier exemple s'il fallait prendre 7h44 où l'état est 3 ou 7h45 où l'état n'est plus 3 (ceci pour l'état 3).

A+

Il faut prendre les 2 : Le début ET la fin de chaque état :

05/07/2017 00:00:00 à 05/07/2017 07:44:00

sauf pour la première ligne de l'état 6 ou il n'y a qu'une ligne : 05/07/2017 08:42:00 (ligne 525)

A par ça, je suis un peu perdu j'ai essayé de tester la récursivité mais là mes neurones ont hissés le drapeau noir !

Et la balade dans les Array c'est pire qu'un labyrinthe dans un champ de maïs...

A+

Tu cherches la difficulté...

J'ai pris une autre voie.

Sub EtatsVoyants()
    Dim d As Object, dh, itm$, v$, w$, e%, ev%, k%, j%, ii%, n&, i&
    Dim LE()
    Set d = CreateObject("Scripting.Dictionary")
    With Worksheets("F392")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        k = .Cells(1, .Columns.Count).End(xlToLeft).Column
        ReDim LE(k - 1, 7)
        For j = 2 To k
            v = Split(.Cells(1, j), ".")(1)
            LE(j - 1, 0) = v
            For i = 3 To n
                If .Cells(i, j) <> "" And IsNumeric(.Cells(i, j)) Then
                    e = .Cells(i, j): w = v & "Etat" & e: dh = Split(.Cells(i, 1))
                    itm = Format(DateValue(dh(0)), "dd/mm/yy") & " " _
                     & Format(TimeValue(dh(1)), "hh""h""mm") & " à "
                    Do While .Cells(i + ii + 1, j) = e And i + ii < n
                        ii = ii + 1
                    Loop
                    dh = Split(.Cells(i + ii, 1))
                    itm = itm & Format(DateValue(dh(0)), "dd/mm/yy") & " " _
                     & Format(TimeValue(dh(1)), "hh""h""mm")
                    If d.exists(w) Then ev = CInt(d(w)) + 1 Else ev = 1
                    d(w) = ev: d(w & "-" & ev) = itm
                    i = i + ii: ii = 0
                End If
            Next i
        Next j
    End With
    For i = 1 To 7
        LE(0, i) = "Etat " & i - 1
    Next i
    For j = 1 To UBound(LE, 1)
        v = LE(j, 0) & "Etat"
        For i = 1 To 7
            w = v & i - 1
            If d.exists(w) Then
                ev = CInt(d(w)): w = w & "-": itm = ""
                For e = 1 To ev
                    itm = itm & Chr(10) & d(w & e)
                Next e
                LE(j, i) = Replace(itm, Chr(10), "", 1, 1)
            Else
                LE(j, i) = "néant"
            End If
        Next i
    Next j
    With Worksheets.Add(after:=Worksheets("F392")).Range("A1").Resize(UBound(LE, 1), 8)
        .Value = LE
        .Columns.ColumnWidth = 28.29
        .Columns(1).ColumnWidth = 8
        .Rows.AutoFit
        .VerticalAlignment = xlCenter
        .Rows(1).HorizontalAlignment = xlCenter
        .Borders.Weight = xlThin
    End With
End Sub

Je voulais déboucher sur quelque chose d'un peu différent mais j'ai eu la flemme de faire le complément nécessaire...

Cordialement.

Je te sentais bien sur ce coup... Joli !

Merci ! J'avais pas trouvé motivant au départ ! (et j'ai eu un trou dans mes activités de prises de rendez-vous ! le premier que je n'ai pas pu prendre me bloque les autres... ça m'a laissé du temps !)

C'est quand même un peu abscons ton truc :

Avec ces variables ésotériques, j'en suis encore à me demander ce que tu as mis dans le Dico !

Si tu vois pas je t'explique... mais après manger !

Oui, oui... Oh tu as même le temps d'une grosse sieste !

Avec un peu de chance comme d'habitude, le déclic me viendra en dormant !

Re,

Un exemple pour illustrer :

En parcourant par colonnes, j'ai tour à tour chaque ENR et en lignes je détecte les changements d'état...

Prenons l'ENR10 pour illustrer : à la ligne 3 j'ai état 3 : je cherche la clé de dico : ENR10Etat3, elle n'existe pas : je la crée en lui affectant la valeur 1, et nouvelle clé : ENR10Etat3-1 dans laquelle je mets l'item dates : 05/07/17 00h00 à 05/07/17 07h44

Après être passé par divers autres états au fil des lignes, je retombe sur 3 : la clé existe, j'incrémente sa valeur, donc à 2... et à

ENR10Etat3-2 j'affecte l'item déterminé : 05/07/17 20h01 à 06/07/17 03h20

Pour chaque ENR à la fin j'aurais au max 7 clés 'génériques' ENRxEtat0 à ENRxEtat6, qui si elles existent, contiennent le nombre de clé d'items recensés.

Par ex. ENR10Etat3 contiendra 4, donc j'aurais également ENR10Etat3-1 à ENR10Etat3-4 qui contiennent les items que je vais regrouper dans la même cellule de mon tableau (et si la clé générique n'existe pas, je mets "néant")...

J'ai préféré ce dédoublement à une concaténation dans un même élément dico (sans doute parce qu'à l'origine j'avais envisagé une proc. de choix à la demande de l'enrouleur et l'état recherché, avec 3 proc. une établissant le dico complet en variable module, une pour extraire les éléments demandés du dico et les affecter à une plage, une troisième pour lancer, vérifier si le dico est créé (variable booléenne), sinon le créer, et questionner l'utilisateur, et peut-être une 4e pour éliminer le dico quand plus besoin). Mais j'ai eu la flemme en cours de route, et j'ai réorienté !

Cordialement.

Très bien. Tu as visiblement une meilleure approche que moi dans l'approche globale des problèmes.

J'ai toujours eu une vision un peu étroite et par voie de conséquence au niveau conceptuel je suis parfois un peu gêné aux entournures surtout dans des situations un peu inhabituelles ou il faut sortir des sentiers battus.

A+

Je suis en hiver, on aborde la soirée, la température est fraîche (à peine 23°), mes chevilles ne vont pas trop enfler !!!

Ceci dit il faut bien que chacun ait quelques qualités... J'ai (avais au moins, avec l'âge quelques trous...) une plutôt bonne mémoire (à mes débuts professionnels, il y a fort longtemps, je me suis rendu compte au bout de 6 mois que l'on venait me demander à moi comment régler telle ou telle question de boulot, moi qui ne savait sinon rien du moins pas grand chose..., et j'ai constaté alors que si je ne pouvais pas répondre à la question, je savais qui savait ! qualité que j'ai par la suite essayé d'entretenir...) ; une autre que j'ai développé par la suite consistait à détecter les idées intéressantes (que je n'avais pas eues ! ) pour les appliquer ailleurs, ou bien mixer deux idées d'origine et domaines différents pour en faire une solution dans un autre domaine encore ou un autre contexte...

Cher ami ! Etant donné le nombre de choses que j'ai pu apprendre à ton contact (depuis maintenant une bonne dizaine d'années !), et qui m'ont en leur temps ouvert pas mal d'horizons, je pense pouvoir affirmer que tu as presque toujours un taux non nul de participation aux solutions que j'échaffaude... Et sans aller chercher dans les petits détails techniques, c'est par ton intermédiaire que j'ai abordé le dico, et tout un pan dans l'utilisation de tableaux...

Bonne soirée

Mais qu'est devenu notre demandeur ?

Merci à vous de chercher à me débloquer.

Il faut savoir combien il y a de périodes de 3 et de 6, et si le tableau commence directement avec un 3 ou un 6 il faut commencer a comptabiliser la période jusqu'au changement d'état.

J'attend vos retours.

Rechercher des sujets similaires à "extraction donnees tri tableaux"