Bonjour Claude,
Je te prie de vouloir trouver ci-joint le "cahier des charges" ainsi que les explications.
J'espere que ce sera plus clair et si cela ne l'est pas, n'hesites pas a m'en avertir.
Merci,
Ludi
Version imprimable
Bonjour Claude,
Je te prie de vouloir trouver ci-joint le "cahier des charges" ainsi que les explications.
J'espere que ce sera plus clair et si cela ne l'est pas, n'hesites pas a m'en avertir.
Merci,
Ludi
Bonjour Ludi,
Tu parles toujours de fichiers Excel, il s’agit en fait de fichiers CSV.
Si j’ai bien lu, il y aura dans un sous-répertoire de la db Access une série de fichiers CSV répartis suivant cette arborescence pour chacun des huit carrousels :
http://claudeleloup.developpez.com/&99/L1594.jpg
Dans chaque fichier on trouve entre autres :
- le nom de la variable : VarName ;
- le temps : TimeString ;
- une valeur : VarValue.
L’enjeu de l’application :
- une anomalie survient dans la production ;
- à l’aide d’un formulaire, l’utilisateur va communiquer une série d’infos qui vont permettre de déterminer quels fichiers CSV sont utiles à considérer pour en extraire certains enregistrements qui seront – dans un deuxième stade – exploités dans une feuille Excel.
Si j’ai bien compris ton cahier des charges, lorsque l’utilisateur a dit de quel « carrousel » et de quelle « position » il s’agit, on peut directement déduire quels fichiers Counter*,Burners* et TILTING* il faut charger dans tInput.
Il doit dire quel « thermocouple » pour déterminer quels enregistrements des fichiers Outside_Burner* et THERMOCOUPLE_* il faut charger dans tInput.
Et enfin, si besoin, donner la catégorie du burner.
Si mon analyse est correcte, ce formulaire devrait faire l’affaire :
http://claudeleloup.developpez.com/&99/L1595.jpg
Peux-tu confirmer que mon analyse est correcte ?
Pour me permettre de reprogrammer, peux-tu constituer un jeu de test avec des données réelles (éventuellement réduites quant à la quantité d’enregistrements, mais un échantillon de tous les fichiers pour au moins un carrousel).
Si le zip est trop lourd, envoie-le à mon adresse mail, je le déposerai sur mon espace.
Bonjour Claude,
Effectivement ouiCitation:
Tu parles toujours de fichiers Excel, il s’agit en fait de fichiers CSV.
en gros oui mais il manque des choses dans le formulaire. Celui-ci sera plus comme ca :Citation:
Peux-tu confirmer que mon analyse est correcte ?
Pièce jointe 168944
Il a ete traduit en anglais car ici c'est la langue de l'entreprise.
Un bouton final juste entrer serait plus significatif pour eux
D'ailleurs la sortie sera sous quel forme?
(Pour la suite qui sera developpe en Excel on me demande)
Je t'envoie echantillon de jeu de test par test mais comme tu as pu le voir dans autre discussion, il vaut mieux attendre de solutionner l'autre probleme?
Merci beaucoup de ton aide,
Ludi
Bonjour Ludi,
Voici une proposition qui traduit ce que j’ai compris de ton cahier des charges.
Les fichiers .csv à considérer pour analyser une anomalie sont logés dans un sous-répertoire de celui de la db, comme ceci :
http://claudeleloup.developpez.com/&99/L1607.jpg
Tous les fichiers .csv ont la même structure :
http://claudeleloup.developpez.com/&99/L1610.jpg
... mais la colonne VarValue contient des valeurs de significations différentes (un N° de pièce ou autre chose).
Le formulaire fCommande permet à l’utilisateur de communiquer quel échantillon d’enregistrements il faut extraire des fichiers .csv pour les exporter vers une feuille Excel qui produira un graphique
http://claudeleloup.developpez.com/&99/L1612.jpg
Voici ce que j’ai programmé pour l’instant : l’utilisateur coche des cases pour exprimer sa requête.
Dans les lignes 2 à 7 plusieurs cases peuvent être cochées.
1 Seulement les fichiers du carrousel indiqué : 1 seul choix possible par exécution. Une et une seule case est obligatoirement cochée.
2 On charge tous les fichiers contenus dans les répertoires Counter* des lettres correspondantes.
3 On indique ici les N° des thermocouples à considérer plus bas à la ligne 6.
4 On charge tous les fichiers contenus dans les répertoires Temperature Furnance* des N° cochés.
5 Cette ligne va de pair avec la ligne 2. On charge tous les fichiers contenus dans les répertoires Logs Burners* de la lettre qui correspond aux lettres des positions choisies au point 2. Et on ne retiendra que les enregistrements qui concernent HIGH FLAME ou LOW FLAME selon la (ou les) case cochée.
6 Cette ligne va de pair avec la ligne 3. On charge tous les fichiers contenus dans le répertoire Outside_Burner. Et on ne retient que les enregistrements qui concernent les thermocouples choisis à la ligne 3.
7 On charge tous les fichiers contenus dans les répertoires Tilting_ des positions spécifiées.
8 On retient les enregistrements dont le TimeString se situe dans la plage indiquée.
Une date est obligatoire. Pour les heures, par défaut, départ 00 : 00 et arrivée 23 : 59 : 59.
9 Quand cela a du sens, on peut aussi limiter l’échantillon selon le N° des pièces (que l’on trouve alors dans VarValue).
Lorsque l’utilisateur a coché les cases pour fixer son choix, il clique le bouton Load.
Le programme balaie alors l’ensemble des sous-répertoires pour importer les enregistrements des fichiers *.csv ad hoc dans tInput et produit l’échantillon qui correspond à la plage de temps ou de pièces. (Actuellement la requête rOutputDate.)
Points en suspens
1° Pour le problème de la version avec les paramètres régionaux bulgares, on verra plus tard puisque Jean-Marie et Mandresy :coucou: ont trouvé la marche à suivre pour convertir (http://www.developpez.net/forums/d14...s/#post8134054).
Je propose que l’on mette d’abord au point une version « poule au pot » (on trouvera plus facilement de l’aide sur dvp). Quand elle sera OK, on fera une version « капама ».
2° Je n’ai pas pu déterminer quand il convient de charger les fichiers des sous-répertoires Temperature*. (Pas compris à quelle case cochée ces fichiers correspondent.)
3° Tu dois repréciser la notion de N° de pièces.
Pour moi, ce n’est pas clair, dans les fichiers que tu m’as envoyés VarValue a une valeur 0 là où j’attends un N° de pièce.
4° La version actuelle du programme se trouve ici : http://claudeleloup.developpez.com/&99/20150215Ludi.mdb
Pour tester, tu dois loger 20150215Ludi.mdb dans un PC formaté à la française et garnir les sous-répertoires avec des données réelles.
Par exemple, avec les données que tu m’as transmises, tu dois obtenir ceci
http://claudeleloup.developpez.com/&99/L1615.jpg
Le programme va charger tInput avec quelque 68 000 enregistrements (environ 30 secondes) et en exporterait 2402 vers Excel.
5° Y a-t-il une objection à rendre publiques les données que tu m’as transmises par mail le 13/2 ?
Bonjour Claude,
Merci pour ta proposition.
Pour repondre a ce que tu as compris:
1. Oui
2. Non, cela nous donne juste indications sur la position pour savoir de quoi on parle. Par exemple si je coche A, je n’ai besoin que dans fichiers Concerant A, counterA, temperature A, B1… Du coup, cela ne sert qu'a savoir les fichiers concernes a chaque lignes ci dessous
3. Non plus, ici on charge fichiers correspondant a la position et au thermocouple voulus. Dans mon cahier charges ; il s’agit des fichiers temperature dans le 5. . En gros s’il te dit position A TC2 et TC5, tu charges le fichier temperature A et seulement les TC 2 et 5. Donc tu aras toutes les VarValue du style B1_temper_TC2 et B1_temper_TC5
4. Oui
5. Oui
6. Non, on charge tous les fichiers Outside burners et on ne retient que les TC voulu ici. Ces TC peuvent etre different de ceux des temperatures . Par exemple si ici je coche TC3 et TC6, je retiens toutes les lignes dont VarName vaut : Outside_Burner_TC3 et Outside_Burner_TC6. On doit donc bien laisser case de choix de TC1 a TC8
7. Oui
8. Oui.
9. Oui, ces valeurs sont dans VarValue des fichiers Counters
Points en suspens
1. Oui, je suis OK pour cela.
2. Ils correspondent a la case Thermocouple
3. Les pieces sont numerotees lorsqu’une nouvelle est cree. On ne doit retenir que les numeros different de zero. A priori a chaque coup d’horloge ont met zero sauf si piece est OK (calcul de temps de cycle)
4. OK, je teste demain matin. On pourrait exporter cette table direct dans une feuille Excel facilement ou mon collegue devra l’importer quand il creera son Excel ? je pense que si on enregsitre cette sortie au bon format cela serait plus simple pour lui, non ?
5. Objection oui et non. Je veux bien rendre public les donnees si tu modifies les Value ou en tout cas quelque une, histoire que notre process ne soit pas en libre access sur internet
Je crois qu’on se rapproche de la demande client et je te remercie vraiment pour ton aide et ton investissement dans ce projet. Je teste tout demain :)
Bon dimanche,
Ludi
Bonjour Ludi,
OK modifié.
Le formulaire fCommande permet à l’utilisateur de communiquer quel échantillon d’enregistrements il faut extraire des fichiers .csv pour les exporter vers une feuille Excel qui produira un graphique
http://claudeleloup.developpez.com/&99/L1632.jpg
Voici ce que j’ai programmé pour l’instant : l’utilisateur coche des cases pour exprimer sa requête.
Dans les lignes 2 à 7 plusieurs cases peuvent être cochées.
1 Seulement les fichiers du carrousel indiqué : 1 seul choix possible par exécution. Une et une seule case est obligatoirement cochée.
2 On donne ici une indication qui sera utilisée aux lignes 3 et 5.
3 Cette ligne va de pair avec la ligne 2. Si une ou des cases sont cochées :
- on charge les répertoires Temperature* correspondant aux lettres cochées à la ligne 2 ;
- et on ne garde que les enregistrements du type B?temper_TCx* où « ? » est un chiffre et « x » correspond aux TCx cochés sur cette ligne.
4 On charge tous les fichiers contenus dans les répertoires Temperature Furnance* des N° cochés.
5 Cette ligne va de pair avec la ligne 2. On charge tous les fichiers contenus dans les répertoires Logs Burners* de la lettre qui correspond aux lettres des positions choisies au point 2. Et on ne retiendra que les enregistrements qui concernent HIGH FLAME ou LOW FLAME selon la (ou les) case cochée.
6 On charge tous les fichiers contenus dans le répertoire Outside_Burner. Et on ne retient que les enregistrements qui concernent les TC cochés sur cette ligne.
7 On charge tous les fichiers contenus dans les répertoires Tilting_* des positions spécifiées.
8 On retient les enregistrements dont le TimeString se situe dans la plage indiquée. Une date est obligatoire. Pour les heures, par défaut, départ 00 : 00 et arrivée 23 : 59 : 59.
9 Quand cela a du sens, on peut aussi limiter l’échantillon selon le N° des pièces (reste à faire).
Lorsque l’utilisateur a coché les cases pour fixer son choix, il clique le bouton Load.
Le programme balaie alors l’ensemble des sous-répertoires pour importer les enregistrements des fichiers *.csv ad hoc dans tInput et produit l’échantillon qui correspond à la plage de temps ou de pièces. (Actuellement la requête rOutputDate.)
La version actuelle du programme se trouve ici : http://claudeleloup.developpez.com/&99/20150216Ludi.mdb
Pour tester, tu dois loger 20150216Ludi.mdb dans un PC formaté à la française et garnir les sous-répertoires avec des données réelles.
Par exemple, avec les données que tu m’as transmises, tu dois obtenir ceci
http://claudeleloup.developpez.com/&99/L1635.jpg
Le programme va charger tInput avec 5656 enregistrements et en exporterait 2903 vers Excel.
Je te demande de créer un fichier de test que l’on peut rendre public pour que les forumeurs qui suivent cette discussion puissent tester avec des exemples et réagir.
Si le zip dépasse 2,00 Mo, envoie-le à mon adresse e-mail.
Bonjour Claude,
J'ai commence les tests sur le formulaire.
Deja, j'ai un probleme d'affichage (formulaire n'apparait pas en entier) mais ca, on s'en fout, je le gere a la main pour instant
Mais j'ai une erreur :
Deja, je remplit les dates et j'ai un message qui me les demande a nouveau comme sur images ci-dessous :
Pièce jointe 169085
Et la il me demande :
Pièce jointe 169084
Je remplit a nouveau les dates et j'obtiens cette erreur :
Pièce jointe 169086
Merci pour ton aide,
Je te fais un jeu de test pour publier et t'en envoie un nouveau pour les counters
Ludi
On n'est pas encore sorti de l'auberge !
C'est un problème franco-anglais, j'essaie de le contourner.
Ah ! si tout le monde parlait français...
LOL, je suis desoleCitation:
On n'est pas encore sorti de l'auberge !
merciCitation:
C'est un problème franco-anglais, j'essaie de le contourner.
ha ben ca...Citation:
Ah ! si tout le monde parlait français...
Regarde si ça marche : dans cette version, je crée la requête rOutputDate à la volée (pas piquée des vers !), cela devrait contourner le problème entre ta version anglophone à la sauce française et ma version française à la sauce belge.
Je croise les doigts... et les bras en attendant ta réponse.
Claude,
Je regarde ou?
Il n'y a pas de pieces jointes?
J'ai chargé une version modifiée sur mon site
http://claudeleloup.developpez.com/&99/20150216Ludi.mdb
ok merci
Il apparait ceci :
Pièce jointe 169096
Je ne comprend comment je remplit la?
Il y a progrès.
Je crains un problème de format de date.
Essaie 2/12/2015 comme date pour voir.
ca me remet ceci:
Pièce jointe 169101
merci,
Ludi
Ok on va chercher une autre solution.
Tu peux déjà voir ce qui a été chargé dans tInput : c'est ce qui serait exporté vers Excel s'il n'y avait pas de restriction sur les dates.
Refais un essai avec la date du 12 février et montre
- une capture d'écran de tInput pour que je puisse voir comment la date est formatée ;
- une capture d'écran du formulaire.
Voila le formulaire comme je l'ai remplit :
Pièce jointe 169107
et ce que ca m'affiche:
Pièce jointe 169106
il n'y a pas d'acces a tInput ou de vision de la table. ca s'arrete la...
Merci
Ludi
Bon on progresse.
Le résultat que tu montrais au billet 75 provient certainement du fait que dans tes fichiers .csv, il n’y a pas d’enregistrement pour la plage de date renseignée !
Par contre au billet 77, tu vois ce qui serait exporté vers Excel si tu prends toute la journée du 12 février.
Fais un essai en limitant de 15:00 à 16:00
Citation:
il n'y a pas d'acces a tInput ou de vision de la table. ca s'arrete la...
C'est normal. Ouvre la table manuellement !
Ha oui, je suis bete^^Citation:
Le résultat que tu montrais au billet 75 provient certainement du fait que dans tes fichiers .csv, il n’y a pas d’enregistrement pour la plage de date renseignée !
Voila ce que j'obtiens :Citation:
Par contre au billet 77, tu vois ce qui serait exporté vers Excel si tu prends toute la journée du 12 février.
Fais un essai en limitant de 15:00 à 16:00
Pièce jointe 169124
Pièce jointe 169125
Je n'avais pas vu la table desole^^
Merci, Ludi
Donc on y est !
Fais quelques essais de combinaisons pour pouvoir vérifier que le contenu qui sera exporté vers Excel correspond aux attentes.