Trouver l'écart entre plusieurs MIN et MAX
Bonjour à tous,
J'ai un peu testé toutes vos solutions et voici ce que j'en pense :
* Steelson, ton idée de TDC est cool cependant je ne peux pas me permettre de toujours faire la manip de créer un TDC à partir de mes données. De plus, les en-têtes me sont indispensables car dans mes formules pour retrouver la colonne qui correspond à ce que je recherche, je dis que je dois rechercher sur la ligne 9 (qui sera tjs la même car même en-tête).
*Zebulon, ta solution aussi me semble correcte, mais pareil que Steelson, je n'y connais rien en Power Query et en plus je suis déjà perdu avec le changement de la forme de mes tableaux
L' idée est que je ne change rien du tout à la forme de mes feuilles Excel que j' ajoute dans mon Classeur COP. Comme ça, peut importe la date choisie, tout se calcule directement dans mon tableau créée pour, avec un effet visuel clair et une comparaison simple est possible entre les différentes dates.
*H2SO4, ta solution est celle que je privilégie car elle ne crée rien de nouveau, ne change pas la forme de mes tableaux et tu obtiens exactement les résultats dont j'ai besoin! Cependant, je ne connais absolument pas la macro (je ne sais même pas où aller dans Excel pour coder, comment activer la macro sur mon classeur pour ensuite copier ta fonction dans mon classeur, etc......)
Pour la suite du problème, il est difficile de donner un exemple concret car ce que je vous demande, ce sont des exemples qui ne sont pas censés se produire ! Néanmoins, comme mon stage arrive à son terme et que je n'aurai normalement plus à aller dans cette entreprise, j' essaie tout de même d'imaginer toutes les éventualités possibles afin de les débarrasser d'un problème qui pourrait survenir dans le programme sans qu'ils ne sachent le résoudre...
Je remets ici un nouveau fichier plus complet (que j'ai encore beaucoup modifié dans les formules même après avoir vu quelques erreurs mais pas dans la forme)
Voici ce que j'ai modifié :
1) La consigne n'étant pas de 52 mais 50 (oups)
2) En ce qui concerne les vannes, on va oublier cette étape pour le moment car je dois encore en discuter avec l'entreprise pour savoir exactement ce qui est possible de faire ou non.
3) J'ai rajouté 3 feuilles pour avoir plus d'exemples (20.10.16, 20.10.23, 27.10.20). Celles-ci sont plus représentatives de la réalité (car celles 20.10.20 je les ai modifiés moi-même pour que vous compreniez mieux). Dans ces 3 nouvelles, ont peut constater que dans 20.10.16, en cours d'enregistrement, l'utilisateur à introduit le paramètre "importation d'énergie" et la donnée apparait donc en ligne 4769 avec une valeur de 180. Cependant, dans la feuille COP, à la date du 16/10, la valeur MIN renvoyée est 0. Je suppose qu'il considère les espaces vides comme des 0. => J'aimerai donc si possible qu'il me trouve le MIN (toujours comme on a fait avant), en ne considérant ni les espaces vides, ni les 0. Et cela pour toutes les données de mon tableau COP.
J'aimerai aussi obtenir les delta (corrects!) de la même manière que H2So4 l'a obtenu, en changeant cette fois la consigne : au lieu de mettre consigne=18, il me faut <=30; au lieu de mettre consigne =52, il me faut >30 ; le tout toujours différent de 0 ! (car c'est le mode arrêt).
Je vais rajouter 2 petites demandes dont vous pouvez surement tous m'aider et qui ne nécessite pas forcément l'utilisation de macro :
=> Un peu de la même manière que le reste, compléter, en fonction de la feuille, les dernières données de mon tableau (temps de fonctionnement et delta température). Dans la première, j'aimerai (on fonction des consignes donc >;<=30;différent de 0), obtenir le delta en temps de fonctionnement. Donc, combien de temps la pompe a tournée en chaud (consigne >30) et en froid (consigne <=30). Et mettre 0 si elle n'a pas tourné dans le mode considéré.
=> enfin, je ne sais pas si c'est possible : de la même manière toujours, en fonction de la consigne, obtenir le delta de température pour le mode considéré, mais cette fois j'aimerai que le calcul ne se fasse pas directement mais plutôt qu'il m'indique les bornes.
Ex :
- j'aimerai qu'il soit noté dans feuille COP, temps en chaud = somme des delta temps ou la pompe à tournée en chaud (consigne >30) et pareil pour le froid. Et =0 si elle n'a pas tourné dans ce mode (donc delta =0).
- pour la température c'est un peu plus compliqué, mais j'aimerai si possible avoir un truc, pour le 27/10/20 (car les données températures n'ont été prises en compte qu'à partir de cette date là) noté comme ceci dans la case mode chaud : "9,3-9,3/9,4-9,9/10,5-10,8" histoire de bien voir sous quelles températures elle à fonctionné en chaud car un delta température n'est pas vraiment représentatif de la réalité. Autrement dit, qu'il soit noté les intervalles (ce ne sont pas des moins de la soustraction ni des barres de divisons) des moments ou elle a tourné en chaud ou en froid.
Petite remarque, dans la feuille du 27/10/20, la consigne passe à un moment à 5 (mode froid), d'où le changement de consigne autour de la valeur 30. Dès lors, dans ma feuille COP, je dois obtenir une importation d'énergie différente de 0 dans les colonnes s'y référant (en froid). Cela impliquera que j'aurai un temps de fonctionnement et un delta température également dans les colonnes appropriées.
Voilà, je pense que ce sera tout
Désolé pour toute cette littérature mais je pense que mon problème est très spécifique et à besoin d'être bien expliqué ! N'hésitez pas à le dire si ce n'est pas clair !
Encore mille merci pour votre aide, on y est presque !
PS : mes demandes ne concernent que l'importation d'énergie, qui était mon problème initial et dont H2So4 semble bien parti pour résoudre. Les autres colonnes, je m'en occupe (oui parce que vous ne pouvez pas tout faire à ma place) !
Petite remarque : serait-il possible, dans une autre casse de mon classeur, peu importe laquelle (hors de mon tableau of course) , de faire la même chose mais cette fois si en considérant que l'état de consigne =5 est un mode standby manuel. Donc dans ce cas je n'aurai pas ce que j'ai dis, à savoir un mode froid pour la date du 27/10/20, mais faire comme si, dans les conditions de calculs précédentes, le 0 et le 5 soient les consignes d'arrêt. Ainsi je pourrai "m'amuser" un peu avec les fonctions/formules histoire de bien les comprendre et de pouvoir par la suite les modifier si besoin en est
* Steelson, ton idée de TDC est cool cependant je ne peux pas me permettre de toujours faire la manip de créer un TDC à partir de mes données. De plus, les en-têtes me sont indispensables car dans mes formules pour retrouver la colonne qui correspond à ce que je recherche, je dis que je dois rechercher sur la ligne 9 (qui sera tjs la même car même en-tête).
Juste une correction ... si tes donnés sont importées en tableau ou dans un tableau, le TCD se calera sur la nouvelle plage. Quant à l'en-tête je n'ai pas bien compris mais le TCD s'appuie sur les libellés.
Quoi qu'il en soit, je te laisse volontiers avec notre expert h2so4 qui trouvera une solution ....basique !
Joli jeu de mot ! merci pour ton complément d'informations. Il se passe qu'en fait je ne connais rien à Excel et je ne connais surement pas assez bien les TCD pour les manipuler correctement... car dans ma tête, pour faire un TCD, il faut aller dans le ruban, en créer un à partir d'autres données dans un tableau, mettre les axes etc. Je ne vois pas trop comment "automatiser" cela avec mes faibles connaissances...
Quoi qu'il en soit, je te laisse volontiers avec notre expert h2so4 qui trouvera une solution ....basique !
lol !
bonsoir,
j'ai adapté et créé des fonctions supplémentaires permettant de simplifier tes formules à rallonge (et peu performantes).
SDIC (somme des différences entre valeurs min et max d'intervalles selon valeur d'une consigne (avec ou sans opérateur <=>)
LIC( liste des valeurs min et max d'intervalles selon valeur d'une consigne (avec ou sans opérateur <=>)
MINSP (min pour une colonne sur une feuille donnée (0 exclu) consigne optionelle), renvoie 0 si aucune valeur n'est trouvée
MAXSP(max pour une colonne sur une feuille donnée, consigne optionelle) renvoie 0 si aucune valeur n'est trouvée
COLLIB (identifiant de la colonne contenant un libellé donné)
Pour pouvoir tester avec ma version UK et sans disposer de tes fichiers j'ai dû modifier les formules en G et H. J'ai mis quelques formules mais je n'ai pas complété tout ton tableau, je t'ai laissé du taf.
Pour voir le code, le plus simple et de faire un clic-droit sur une feuille, puis voir code et sélectionner module1 (alternative est d'accéder via le menu après avoir activé l'accès développeur, clic-droit sur la barre de menu, personnaliser, sélectionner développeur.
Merci beaucoup pour ton aide ! Je vais m'y plonger en essayant de comprendre, en regardant les topics qu'il y ici sur le VBA et en complétant le reste de mon tableau ! Je reviens vers toi si j'ai d'autres questions (qui arriveront sans doute
Hello H2So4 ! Merci beaucoup pour tes solutions qui semblent coller parfaitement avec mon problème ! J'obtiens les bonnes données partout ou j'en avais besoin ! Enfin presque...
Je fais beaucoup de tests à partir de ce que tu m'as envoyé pour être sûr de bien comprendre et envisager toutes les éventualités et je me suis rendus compte de 2/3 trucs qui ne collaient pas :
1) en regardant les Δ temps, j'ai remarqué que ceux concernant le 27/10/20 n'étaient pas bons. J'ai pu constater en fait que ta fonction prenait en compte, comme je l'avais demandé, une consigne =<30 sauf 0. Ce qui fonctionne ! Mais en me plongeant dans la feuille 20.10.27, je remarque qu'en fait, par moments, la consigne est à 5 (qui était à ce moment là à l'arrêt)... J'ai donc contacté l'entreprise qui m'a expliqué qu'en fait, il y avait plusieurs valeurs de consignes possibles et donc que ta fonction ne marcherait pas tout le temps.
- froid : consigne <=30 (sauf 0) ET statut gest. chaleur =2;
- chaud : consigne >30 (sauf 0) ET statut gest. chaleur =1;
- à l'arrêt : consigne =0 ET statut gest. chaleur =0
Et forcément, à partir de ça, refaire la même chose pour les Δ. Désolé pour cette information de dernière minute que je ne possédais pas...
2) quand j'effectue le test de rajouter une colonne n'importe ou dans une feuille autre que celle COP, l'assignation des lettres des colonnes de la feuille COP ne change pas. En d'autres termes, quand j'effectue une modification test, la classeur calcule mais rien ne s'actualise... Pour voir la modification, je dois retourner sur la cellule (par exemple O24 de COP) et revalider la formule (avec ctrl + maj + enter). Mais ça actualise uniquement la lettre de cette cellule concernée... Comment se fait-il ?
Voilà, normalement c'est tout et après je ne t'embête plus avec ça
Donc, dans ma feuille COP, à la date du 27/10/20, le Δ en AC42 doit être = à 0 et donc le Δ en AR42 doit lui aussi être à 0. Logique, car si le premier Δ =0, c'est que la pompe n'a pas tournée !
Merci beaucoup d'avance pour tes dernières petites modifications, on y est !!
Je ne sais pour quelle raison, je n'arrive pas à éditer mon message donc en voici la suite ...
Il m'a aussi été demandé 2 trucs supplémentaires : (à rajouter tout à la droite de mon tableau)
1) la T° ext. moyenne : l'idée serait donc, quand on est en mode chaud, de faire la moyenne sur les températures pendant lesquelles la pompe a tournée. Je pense que les Δ températures déjà trouvés peuvent faciliter l'opération. Par ex, pour la date du 27/10/20, il faudrait calculer la moyenne (en chaud) en faisant ( (9.3+9.3)/2 + (9.4+9.9)/2 + (10.5+10.8)/2 ) / nbr d'intervalle (ici 3). Ce qui ferait comme total 9.87°. Cependant, si dans un intervalle la température passe par exemple de 12.5° à 8°, puis à 15°, la moyenne sera calculée par (12.5+15)/2 =13.75, mais cette donnée me semble erronée à cause du 8°... As-tu une suggestion pour parvenir à une moyenne correcte ? Sinon alors peut-être, sommer chacune des valeurs de températures comprises dans cet intervalle et diviser le résultat par le nombre de ligne de cet intervalle ? Je pense que ce résultat sera plus correct.
2) la puissance chaud/froid moyenne. L'idée serait à peu près pareille : quand la pompe tourne, en chaud (en fonction des consignes etc.) calculer la moyenne des colonnes "1.10.1.29051 | Puissance actuelle chauffage" et "1.10.1.29053 | Puissance actuelle refroid". Pour cela, je ferais donc la même chose, en prenant la somme des valeurs comprise dans l'intervalle et diviser par le nombre de ligne de cet intervalle.
J'ai rajouté des colonnes dans mon tableau COP qui déterminent à chaque fois la lettre des colonnes considérées, pour plus de faciliter.
Petite remarque, pour ces 2 nouveau calculs, les 0 et chiffres négatifs ne sont pas à négliger (seul ceux de la consigne).
Voilà, je sais que je t'en demande beaucoup mais je ne sais pas comment j'aurai pu y arriver sans ton aide... ça me sauve la vie et par la même occasion mon stage !
Merci merci merci, n'hésite pas si des explications ne sont pas claires !
PS : la colonne "1.3.0.2054 | Statut gest. Chaleur" dont je parlait dans le message précédent à basculé de la colonne R à la colonne T du fait de l'ajout des 2 autres colonnes
bonjour,
- froid : consigne <=30 (sauf 0) ET statut gest. chaleur =2;
- chaud : consigne >30 (sauf 0) ET statut gest. chaleur =1;
- à l'arrêt : consigne =0 ET statut gest. chaleur =0
n'est-il dès lors pas suffisant de tester simplement le statut gest. chaleur ? 0 à l'arret, 1 chaud, 2 froid ?et ignorer la consigne ?
Merci beaucoup d'avance pour tes dernières petites modifications, on y est !!
ben j'ai pas vraiment l'impression ... vu les demandes additionnelles, j'ai l'impression de faire ton stage à ta place et ne compte pas trop sur moi pour cela. Ma disponibilité (et mon intérêt pour la chose) est limitée.
C'est exactement ce que je me suis dis ! J'ai donc demandé et c'est parce qu'en fait, la pompe à chaleur est contrôlée par 2 ordinateurs différents. Un premier qui contrôle "l'ensemble" on va dire (donc avec les pompes de débits, les vannes, l'accumulateur d'eau etc. c'est assez complexe) et un second qui contrôle uniquement la pompe à chaleur.
Donc la valeur du gest. de chaleur provient elle de l'ordinateur qui contrôle "l'ensemble". Et la valeur de consigne provient du second qui ne contrôle que la pompe. Tout ça est fait automatiquement.
Cependant, on peut manuellement venir changer la consigne (sur le second ordi), pour tester différents cas de figure et observer comment évoluent les COP, ou quand une panne à lieu, etc. Malheureusement, quand on change la valeur de la consigne manuellement, l'ordi "ensemble" lui n'est pas au courant de ce qui vient de se passer, il pense qu'il est toujours en automatique et qu'il contrôle tout
Par ex, automatiquement, la pompe est en mode chaud : valeur 1 et consigne >=30. Puis, manuellement, un technicien change la valeur de la consigne et la met à 20. La pompe passe donc en mode froid, mais la valeur gest. de chaleur elle reste à 1 (chaud). Il y a donc problème... D'où le fait qu'ils demandent ce fameux "double-check".
Je sais je suis désolé d'en demander autant mais l'objet de mon stage n'était pas du tout lié à l'utilisation d'Excel mais plutôt à un travail d'ingénieur (travail collaboratif, parait-il)....
Je me suis donc retrouvé avec ce problème devant mes yeux , n'y connaissant absolument rien en Excel (n'en ayant tout simplement jamais fait auparavant, d'où mes formules longues et peu efficaces). Je travaille plus de 12h par jour sur ce truc, en allant voir beaucoup sur internet, youtube, des forums etc. en essayant de combler au maximum mes lacunes mais j'ignorais qu'Excel était un si grand univers...
Je suis vraiment désolé de compter autant sur toi mais le temps m'est limité et je ne vois pas comment je pourrai y arriver autrement, sans toi...
bonsoir,
j'ai adapté et créé des fonctions supplémentaires permettant de simplifier tes formules à rallonge (et peu performantes).
SDIC (somme des différences entre valeurs min et max d'intervalles selon valeur d'une consigne (avec ou sans opérateur <=>) et d'un gestionnaire
LIC( liste des valeurs min et max d'intervalles selon valeur d'une consigne (avec ou sans opérateur <=>) et d'un gestionnaire
MINSP (min pour une colonne sur une feuille donnée (0 exclu) consigne et gestionnaire optionels ), renvoie 0 si aucune valeur n'est trouvée
MAXSP(max pour une colonne sur une feuille donnée, consigneet gestionnaire optionels) renvoie 0 si aucune valeur n'est trouvée
COLLIB (identifiant de la colonne contenant un libellé donné)
MIC(moyenne des valeurs selon valeur d'une consigne (avec ou sans opérateur <=>) et d'un gestionnaire
J'ai mis quelques formules mais je n'ai pas complété tout ton tableau, je t'ai laissé du taf.
Pour éviter des problèmes de performances, le recalcul est provoqué dès qu'une valeur est modifiée en colonne G ou H. Si les performances ne sont pas un problème, tu peux activer l'instruction application.volatile dans la fonction collib (enlever le ' devant l'instruction)
Je répète, ne considère pas que je suis une ressource disponible avec un temps illimité à te consacrer et tiens-en compte pour la suite de la gestion de ton stage.
Cent mille merci pour tout ce que tu as fais pour moi jusque maintenant, je t'en suis vraiment hyper reconnaissant... Je vais me baser sur tout ce que tu m'as fourni et inconsciemment appris pour continuer mes différents tableaux et perfectionner chacun d'eux !
L' exploration et la découverte de l'univers Excel me fascine et j'aimerai à terme pouvoir proposer également mon aide à ceux qui en ont besoin.
Encore merci pour tout le temps que tu as investi pour m'aider
Et merci aussi à Steelson et Zebulon2 d'avoir également regardé de leur côté afin de m'aider !
Bonsoir,
n'hésite pas si tu as encore des questions !
Et merci aussi à Steelson et Zebulon2 d'avoir également regardé de leur côté afin de m'aider !
Merci mais je n'ai pas fait grand chose dès lors que tu as opté pour une solution macro.
Néanmoins, le sujet est fort intéressant (parole d'ancien professeur éphémère de thermodynamique).
Quoi qu'il en soit, même si tu n'as jamais touché excel, c'est une véritable opportunité de l'utiliser en vrai car tu auras à utiliser des tableurs dans ta vie professionnelle. Et justement, un stage est aussi l'occasion de se confronter à de nouveaux outils. Je me souviens d'un stage de R&D où nous touchions le code directement en langage machin en hexadécimal.
Oui en fait je me rends compte qu'avec la macro on peut obtenir exactement tout ce qu'on veut (il suffit juste de s'y connaitre...), c'est pourquoi je pense que cette solution est plus "facile" et plus adaptée à mon problème.
En effet, je trouve cela très intéressant et instructif d'avoir à utiliser ce logiciel que je ne pensais pas aussi complet (et je n'ai exploré qu'une infime partie) maintenant plutôt que de l' apprendre lors de mon premier job. Je pense que nous pouvons simplement tout faire avec Excel et j'envisage même, à l'avenir, de suivre une formation afin de combler mes lacunes
Dans tous les cas, merci à vous tous de rester aussi disponible et actif sur le forum pour aider les débutants !
Une petite question me traverse l'esprit : vaut-il mieux valider chacune de mes formules avec ctrl + maj + enter ou juste via enter ? Je suppose que ça joue quelque chose dans les performances et la rapidité de calcul ?
Bonjour,
les fonctions personnalisées que j'ai proposées ne nécessitent pas d'être validées par ctrl-maj-enter. Mais peuvent l'être, cela ne semble pas changer quoi que ce soit au niveau des performances. Par contre il est bien nécessaire de faire une validation matricielle pour des fonctions qui le nécessitent, sinon résultats incorrects.